在 Python 中,re
模块可以用来使用正则表达式匹配字符串。
主要利用方法 re.search(r'pattern', 'text')
和 re.findall(r'pattern', 'text')
。re.match(r'pattern', 'text')
方法使用较少,因为它只能匹配 text
开头的字符串。
模式串使用原始字符串可以避免不必要的麻烦。
match 对象:re.search()
和 re.match()
返回的对象。
对象的方法 | 含义 |
---|---|
match.string |
主串 |
match.re |
匹配时使用的 pattern(正则表达式) |
match.pos |
text 的开始位置 |
match.endpos |
text 的结束位置 |
match.group() |
获得匹配后的字符串 |
match.start() |
匹配的字符串在主串中的开始位置 |
match.end() |
匹配的字符串在主串中的结束位置 |
match.span() |
返回 (match.start() , match.end() ) |
贪婪匹配和非贪婪匹配:
- 贪婪匹配:在满足条件的情况下,尽可能长的去匹配。如:
text = "Pythonnnnn"
,pattern = r"Python+"
。那么匹配到的结果是Pythonnnnn
,而不是Python
- 非贪婪匹配:匹配最小的结果
在上例中,使用 ?
可达到非贪婪匹配的效果:pattern = r"Python+?"
。
:::danger
注:本例貌似不大正确,日后再完善,但大概意思还是对的。
:::
正则表达式写法参考这篇文章:
正则表达式学习笔记