Python re 正则表达式
正则表达式(Regular Expression)是一种文本模式,用于匹配特定模式的字符串。在 Python 中,我们可以通过 re 模块来处理正则表达式,非常方便实用。
re 模块的基本使用
re 模块中包含了许多函数,其中最常用的是 re.match 和 re.search。
re.match 函数
re.match 函数从字符串的开头开始查找符合正则表达式的字符串。如果找到了,返回一个 match 对象,否则返回 None。
import re
str = "Hello, World!"
result = re.match("Hello", str)
if result:
print("Match Found!")
else:
print("Match Not Found.")
输出结果为:
Match Found!
re.search 函数
re.search 函数从字符串中查找符合正则表达式的字符串。如果找到了,返回一个 match 对象,否则返回 None。
import re
str = "Hello, World!"
result = re.search("World", str)
if result:
print("Match Found!")
else:
print("Match Not Found.")
输出结果为:
Match Found!
正则表达式语法
正则表达式语法比较复杂,但理解了规则后,变得非常强大。下面介绍一些常用的正则表达式语法。
字符匹配
字符 | 说明 |
---|---|
. | 匹配除换行符外的任意字符 |
\w | 匹配字母、数字、下划线 |
\W | 匹配非字母、数字、下划线 |
\d | 匹配数字 |
\D | 匹配非数字 |
\s | 匹配任意空白字符,包括空格、制表符、换页符 |
\S | 匹配任意非空白字符 |
import re
str = "Hello, World!"
result = re.match("He..o", str)
if result:
print("Match Found!")
else:
print("Match Not Found.")
输出结果为:
Match Found!
重复匹配
字符 | 说明 |
---|---|
* | 匹配前面的字符0次或多次 |
+ | 匹配前面的字符1次或多次 |
? | 匹配前面的字符0次或1次 |
{n} | 匹配前面的字符n次 |
{n,} | 匹配前面的字符至少n次 |
{n,m} | 匹配前面的字符n次到m次 |
import re
str = "Hello, World!"
result = re.match("H.*o", str)
if result:
print("Match Found!")
else:
print("Match Not Found.")
输出结果为:
Match Found!
分组匹配
使用括号可以将正则表达式分组,在使用 re 模块时可以通过 group 函数获取各个组匹配的结果。
import re
str = "hello, python and java."
result = re.search("(python|java)", str)
if result:
print(result.group())
else:
print("Match Not Found.")
输出结果为:
python
贪婪匹配和非贪婪匹配
前面介绍的重复匹配默认是贪婪匹配,即尽可能多的匹配。下面介绍一下非贪婪匹配。
在重复匹配符后加上 ? 可以实现非贪婪匹配。
import re
str = "hello, python and java."
result = re.match(".*?python", str)
if result:
print(result.group())
else:
print("Match Not Found.")
输出结果为:
hello, python
结论
正则表达式是一种强大的文本匹配工具,在 Python 中通过 re 模块可以非常方便地实现正则表达式的匹配。需要注意的是,正则表达式语法比较复杂,需要花一些时间进行学习和掌握,但同时也给我们带来了非常强大的功能。
在实际开发中,正则表达式可以用于很多应用场合,比如数据校验、文本搜索替换等等。
建议大家多加练习,深入理解正则表达式的各种语法规则,提升自己对于文本匹配和处理的能力。