在 Python 中,通常使用 re 模块来进行正则表达式匹配。下面从基础到常用场景给你一个清晰说明。
import re
text = "我的电话是13812345678,邮箱是abc@example.com"
# 1. 查找第一个匹配
result = re.search(r'\d+', text)
print(result.group()) # 13812345678
re.search()只找第一个匹配
re.search(pattern, string)
re.search(r'\d+', "abc123def456")
# 匹配到:123
re.match()只从字符串开头匹配
re.match(r'\d+', "123abc") # 匹配
re.match(r'\d+', "abc123") # None
re.findall()返回所有匹配结果(列表)
re.findall(r'\d+', "abc123def456")
# ['123', '456']
re.finditer()返回迭代器(含位置信息)
for m in re.finditer(r'\d+', text):
print(m.group(), m.start(), m.end())
re.sub()替换文本
re.sub(r'\d+', '***', "电话13812345678")
# 电话***
| 符号 | 含义 |
|---|---|
. |
任意字符(除换行) |
\d |
数字 |
\D |
非数字 |
\w |
字母数字下划线 |
\s |
空白符 |
^ |
开头 |
$ |
结尾 |
* |
0次或多次 |
+ |
1次或多次 |
? |
0次或1次 |
{n,m} |
n到m次 |
[] |
字符集 |
() |
分组 |
re.search(r'1[3-9]\d{9}', text)
re.search(r'\w+@\w+\.\w+', text)
re.findall(r'\((.*?)\)', "a(b) c(d)")
# ['b', 'd']
re.findall(r'^abc', text, re.MULTILINE)
r""避免转义问题:
r'\d' # 正确
'\\d' # 容易出错
re.findall(r'[\u4e00-\u9fa5]+', text)
如果你有具体的文本和想匹配的内容,可以直接发给我,我可以帮你写正则。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。