笔记,正则表达式里的元字符
正则表达式,一般指的是Perl语言风格的,Python中的re也是这个风格。
为什么叫“正则表达式”?源自Chomsky于1956年建立形式语言体系,他把文法分成四种类型:0、1、2、3型。其中3型文法叫“正则文法”,对应地就有了正则表达式。
一共12个元字符:问加星、点杠斜、小中大、首尾。
问号、加号、星号都是量词,表示它前面的一个单元要重复几次。
问号:0到1次
加号:1+次
星号:0+次
点号:表示任意的一个字符,还有是否包含换行符的区别,这需要添加s标志。
杠(竖线):这是“或”,或的优先级很低,需要区分/abc|def/和/ab(c|d)ef/
。
斜(反斜线):反斜线后边的是转义字符,常见的有\d, \\, \n, \/, \1
等。
小(左右小括号):用来分组,也用来捕捉。可以嵌套。
中(左中括号):一对儿中括号,表示字符集。如:[a-z], [^0-9]
等。
大(左大括号):一对儿大括号,这是量词。如:{4}, {3,7}, {3,}
。前文中的“问加星”是量词的简写。
首尾:^ $
,区分字符串的首尾,和每一行的首尾,用m标志。