美文网首页Python小哥哥
python正则表达式(8)--分组、后向引用、前(后)向断言

python正则表达式(8)--分组、后向引用、前(后)向断言

作者: 我爱学python | 来源:发表于2019-04-30 15:47 被阅读11次

无名、有名分组

(1)正则表达式—无名分组

从正则表 达式的左边开始看,看到的第一个左括号“(”表示表示第一个分组,第二个表示第二个分组, 依次类推。

需要注意的是,有一个隐含的全局分组(就是索引号为0的分组),就是整个正则 表达式匹配的结果

(2)正则表达式—有名分组

命名分组就是给具体有默认分组编号的组另外再起一个别名,方便以后的引用。 命令分组的语法格式如下: (?P正则表达式)

语法格式中的字符P必须是大写的“P”,name是一个合法的标识符,表示分组的别名。

正则表达式—后向引用

当用“()”定义了一个正则表达式分组后,正则引擎就会把匹配的组按照顺序进行编号,然后存 入缓存中。这样我们就可以在后面对已经匹配过的内容进行引用,这就叫后向引用。

(1)通过索引引用

\数字 \1表示引用第一个分组,\2引用第二个分组,以此类推,\n引用第n个组,而\0则表示引用整个 被匹配的正则表达式本身。

交换字符串的位置

(2) (?P=name)通过命名分组名进行引用

(?P=name) 字符P必须是大写的P,name表示命名分组的分组名

(?P<name>)(?P=name) 引用分组的值匹配值必须与第一个分组匹配值相等才能匹配到

例如:

1)    引用前一个分组,前后值相同都是2,故能匹配到

2)    引用前一个分组,前后值不相同分别为2和3,故不能匹配到

正则表达式—前后向断言

(1)前向肯定断言与后向肯定断言

1)    前向肯定断言的语法:

(?<=pattern) 前向肯定断言表示你希望匹配的字符串前面是pattern匹配的内容时,才匹配。

2)    后向肯定断言的语法:

(?=pattern) 后向肯定断言表示你希望匹配的字符串的后面是pattern匹配的内容时,才匹配

3)前后向断言同时使用

如果在一次匹配过程中,需要同时用到前向肯定断言和后向肯定断 言时,那你必须将前向肯定断言表达式写在要匹配的正则表达式的前面,而后向肯定断言表 达式写在你要匹配的字符串的后面

(2) 前向否定断言与后向否定断言

1) 前向否定断言的语法:

(?<!pattern) 前向否定断言表示你希望匹配的字符串的前面不是pattern匹配的内容时,才匹配.

2) 后向否定断言的语法:

(?!pattern) 后向否定断言表示你希望匹配的字符串后面不是pattern匹配的内容时,才匹配。

(3)注意

前向肯定(否定)断言括号中的正则表达式必须是能确定长度的正则表达式,比如\w{3},而不能写成 \w*或者\w+或者\w?等这种不能确定个数的正则模式符。

相关文章

  • python正则表达式(8)--分组、后向引用、前(后)向断言

    无名、有名分组 (1)正则表达式—无名分组 从正则表 达式的左边开始看,看到的第一个左括号“(”表示表示第一个分组...

  • 正则表达式 笔记

    元字符量词字符类分支条件反义分组后向引用零宽断言负向零宽断言注释贪婪与懒惰处理选项平衡组/递归匹配其它 元字符 ...

  • 正则表达式

    re --- 正则表达式操作 Python正则表达式前向/后向搜索的肯定/否定模式的区别和示例 一、 基本参数使用...

  • 后向引用

    后向引用:在后面的表达式中,引用前面某个分组所匹配到的内容 在解释之前需要先了解一下分组编号,在正则表达式中,每个...

  • 正则表达式基础到高阶(语法)

    正则表达式基础到高阶(语法) 元字符 反义 重复模式 贪婪与懒惰 分组 后向引用 要匹配 taobao taoba...

  • 正则表达式 学习

    参考:正则表达式30分钟入门教程 元字符 字符转义 分枝条件 分组 向后引用 零宽断言 负向零宽断言 贪婪和懒惰 ...

  • 正则表达式

    元字符: 反义: 重复: 字符类: 分枝条件: 分组: 后向引用: 后向引用用于重复搜索前面某个分组匹配的文本。例...

  • 正则表达式

    【目录】一、元字符二、字符转义三、重复四、字符类五、分枝条件六、分组七、反义八、后向引用九、零宽断言十、负向零宽断...

  • HMM学习最佳范例七:前向-后向算法3

    七、前向-后向算法(Forward-backward algorithm) 前向-后向算法是Baum于1972年提...

  • Django的路由系统

    基本格式 分组命名匹配 在Python的正则表达式中,分组命名正则表达式组的语法是(?Ppattern...

网友评论

    本文标题:python正则表达式(8)--分组、后向引用、前(后)向断言

    本文链接:https://www.haomeiwen.com/subject/tisvnqtx.html