很多初学者第一次接触正则表达式时,感受通常有点复杂:
- 看别人写的正则像天书
- 自己写时总觉得括号和符号太多
- 明明只是想找个手机号,怎么这么麻烦
但如果你做过这些事:
- 提取邮箱
- 校验手机号
- 批量替换文本
- 从一段字符串里找日期、数字、订单号
你很快就会发现,正则表达式真的非常有用。
这篇文章我们不追求一次性讲全,而是先把最常用、最实战的部分讲透。
一、什么是正则表达式
正则表达式可以理解成:
一套用于描述字符串匹配规则的语法。
例如你想表达:
- 这个字符串里有没有数字
- 这个内容是不是邮箱
- 这个文本里所有手机号在哪
这些都可以用正则表达式完成。
在 Python 中,我们通常使用re模块。
二、最基础的匹配:re.search()
importre text="我的手机号是13812345678"result=re.search(r"138",text)print(result)如果匹配到,会返回一个匹配对象;如果没匹配到,返回None。
注意这里的:
r"138"前面的r表示原始字符串,写正则时很常见,能避免转义混乱。
三、匹配一个数字:\d
\d表示一个数字字符。
importre text="订单号:A1024"result=re.search(r"\d",text)print(result.group())输出:
1如果想找多个数字,可以配合量词。
四、量词:匹配多少次
1.+
表示前面的规则出现 1 次或多次。
re.search(r"\d+","abc123xyz").group()输出:
123