Python:正则表达式-4

读书笔记,原文来自FishC

1)有些字符他们不匹配任何字符,只是简单表示成功与失败,称之为零宽断言。如\b表示当前位置位于一个单词的边界,但\b并不能改变位置。

2)|:对两个正则表达式进行或操作,如果A和B是正则表达式,A|B会匹配A或B中出现的任何字符;|的优先级比较低;如Fish|C应该匹配Fish或C,而不是匹配Fis,然后一个h或C;

同样,使用\|来匹配'|'本身;或者包含在一个字符类中,如[|];

3)^:匹配字符的起始位置,如果设置了MULTILINE标志,就会变成匹配每一行的起始位置;在MULTILINE中,每当遇到换行符就会立刻进行匹配。

4)$:匹配字符串的结束位置,每当遇到换行符也会离开进行匹配;同样,使用\$来匹配'$'字符本身,或者包含在一个字符类中,如[$];

5)\A:只匹配字符串的起始位置;如设置MULTILINE时,功能同^,但\A还是匹配字符串的起始位置,^对字符串的每一行都进行匹配;

6)\Z:只匹配字符串的结束位置;

7)\b:单词边界,只匹配单词的开始和结尾的零宽断言。使用r'\bclass\b',如class只有在出现一个完整的单词class时才匹配;如果出现在别的单词中,则不会匹配;

8)\B:另外一个零宽断言,与\b的含义相反,\B表示非单词边界的位置;


扫描二维码关注公众号,回复: 585279 查看本文章
分组

对于比较复杂的内容,正则表达式通常使用分组的方式分别对不同的内容进行匹配。

在正则表达式中,使用元字符()来划分组。()元字符跟数学表达式中的小括号含义差不多,将包含的内部的表达式组合在一起,如(ab)*会匹配零个或者多个ab;

使用()表示的子组我们可以对它进行按层次索引,可以将索引值作为参数传递给这些方法:group,start,end,span;

按作者小甲鱼解释,有几对小括号就是分成了几个子组(多直白啊);

子组的索引值从左到右进行编号,子组也容忍嵌套;

start()获得参数子组的开始位置;end()获得参数子组的结束位置;span()获得对应子组的范围;

可以通过groups()方法一次性返回所有的子组匹配的字符串;

反向引用:可以在后面的位置使用先前匹配过的内容,用法是反斜杠加上数字,如\1表示引用前边成功匹配的序号为1的子组(不明白?);

默认的,反斜杠加数字来表示数字的值对应的ASCII字符,所以反向索引的正则表达式中,依然强调使用原始字符(前面加r)。

猜你喜欢

转载自blog.csdn.net/huan_126/article/details/80244588