1、入门
正则表达式是用来做字符匹配的,比如看一个字符串里面是否有另一个字符串,或者有多少匹配的方式以及位置。
最简单的,
\d 代表数字 \w代表数字或者字母 .代表任意字符(这是个点)
单独去写这些就代表一个字符
比如
abcde345
#匹配\d 结果如下:
3
4
5
控制数量,
?代表0-1个字符;
*代表0-无限个字符;
+表示至少一个字符;
{n-m}代表n-m个字符;
和上面的符号组合到一起
abcd123ed4567
#匹配\d{3} 匹配三个数字的字符
123
456
567
怎么测试?找了个网站,大家可以试一下~~
https://tool.oschina.net/regex/#
2、进阶
下面进阶~~
[]可以帮助我们精确匹配
(A|B)可匹配A或者B
^开头符号,放这个就代表前面不能有东西
$结尾符号,放这个就代表后面不能有东西
#[0-9a-zA-Z]可匹配一个数字或者字母
#######################
# 例子1 匹配任意py文件 .*代表任意个任意字符 \.代表转义,也就是这块必须有个. py常规字符 $结尾,代表后面不能有东西了
.*\.py$
3、实战
差不多了,搞搞python
import re
我们会定义一个正则字符,然后re模块去使用
一般我们会在字符前面加个r(r可以关闭python的转义,防止和正则化的转义混淆)
3.1 匹配 re.match
test = '用户输入的字符串'
if re.match(r'正则表达式', test):
print('ok')
else:
print('failed')
3.2 拆分re.split
test = '用户输入的字符串'
a = re.split(r'正则表达式', test)
## 例子 : 匹配多种符号划分的句子
re.split(r'[;,、\s]+', 'a;b c,sd、实打实')
['a', 'b', 'c', 'sd', '\xe5\xae\x9e\xe6\x89\x93\xe5\xae\x9e']
3.3 编译正则表达式
正则表达式在使用是需要编译的,在上面的语句中,每次使用都需要编译一下,如果数据量的的话比较耗费时间。
所以如果某个正则表达式经常使用时,我们一般就需要编译一下,如下:
re1 = re.compile(r'正则表达式')
# 使用:
>>> re1.match(test)