Python3实战演练-正则表达式2
正则表达式
贪婪模式与非贪婪模式
贪婪模式
正则表达式尽可能多的去向后匹配,满足的有:* + {m,n} ?
1 |
|
上述输出结果为:
1 |
|
非贪婪模式
正则表达式尽可能少的去向后匹配
贪婪->非贪婪 后面加?即可 如:*? +? {m,n}? ??
1 |
|
上述输出结果为:
1 |
|
正则表达式分组
使用()可以为正则表达式建立一个子组,子组可以看作内部的整体
如:abcd(ef) –> abcdef
- 增加子组后对正则表达式整体的匹配没有影响
- 子组可以改变重复元字符的重复行为
- 子组在某些操作中可以对子组匹配内容进行单独提取
1 |
|
上述输出结果为:
1 |
|
1 |
|
上述输出结果为:
1 |
|
子组的注意事项:
- 每个正则表达式可以有多个子组,由外到内,由左到右分别为第1、第2、第3…子组
- 子组通常不要交叉,如: a(bc(d)e)f
捕获组和非捕获组(命名组和非命名组)
给子组赋予了名字,即起名字。
子组命名格式:(?P<name>abc123)
- 编程接口可以通过名字获取子组匹配内容。
- 捕获组中的正则表达式可以通过名字重复调用。
- 调用方式:(?P=name)
如:上述输出结果为:1
print(re.search("(?P<dog>saisai)123(?P=dog)", "saisai123saisai999").group())
其中,1
saisai123saisai
(?P<dog>saisai)
表示dog = saisai
(?P<dog>saisai)123(?P=dog)
表示saisai123saisai
Python3实战演练-正则表达式2
https://leehoward.cn/2020/03/08/Python3实战演练-正则表达式2/