0%

正则表达式

一开始看这个的原因是udpi里面用到了hyperscan,所以看得hyperscan。杂七杂八看了挺多的,记录下来的不多。能否完善也要看缘分了。

对正则表达式挺感兴趣的,可能之后会再看怎么写正则表达式。(这篇东西等于啥也没有)

regex

  • regrex = regular expression

  • hyperscan

  • PCRE (perl compatible regular expression)

理论

  • 克莱尼代数
  • 三种运算:
    • 串接
    • 选择,表示并集
    • Kleene星号*,表示包含空串闭合在字符串串接下的最小子集
  • Kleene星号有最高优先级,接着是串接,接着是并集。如果没有歧义则可以省略括号
  • 例子
    • a|b*表示 $\displaystyle {\varepsilon ,a,b,bb,bbb,\cdots }$
    • (a|b)*表示由包括空串、任意数目个ab字符组成的所有字符串的集合:${\displaystyle {\varepsilon ,a,b,aa,ab,ba,bb,aaa\cdots }}$
    • ab*(c|ε)表示开始于一个a接着零或多个b和最后一个可选的c组成的字符串的集合:${\displaystyle {a,ac,ab,abc,abb,abbc\cdots }}$
  • 为了使表达式更简洁,正规表达式也定义了?+aa*等于a+,表示a出现至少一次;而(a|ε)等于a?,表示a出现1次或不出现。

欢迎关注我的其它发布渠道