\d | 匹配一个数字 |
---|---|
\w | 匹配一个字母 |
. | 可以匹配任意字符 |
* | 需要字符串里完全符合,匹配规则,就匹配 |
+ | 表示至少一个字符 |
? | 表示0个或1个字符 |
{n} | 表示n个字符 |
{n,m} | 表示n-m个字符 |
[ ] | 表示范围 |
(PIp) | 可以匹配大小写p开头的字符串 |
^ | 字符串开始位置与匹配规则符合就匹配,否则不匹配 |
$ | 字符串结束位置与匹配规则符合就匹配,否则不匹配 |
\ | 转义字符(由于python字符串本身也用 \ 转义所以不常用) |
r’ABC-001’ | 代替 \ 转义字符 |
\s | 匹配空格和tab等空白符 |
– | – |
什么是正则表达式的贪婪与非贪婪匹配
如:String str=“abcaxc”;
Patter p=“ab.*c”;
贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc(ab.*c)。
非贪婪匹配:就是匹配到结果就好,就少的匹配字符。如上面使用模式p匹配字符串str,结果就是匹配到:abc(ab.*c)。
re模块
import re
test = '一堆字符串'
if re.match(r'正则表达式',test):
print('成功')
else:
print(’失败‘)
import re #第一步,要引入re模块
test = '一堆字符串'
a = re.findall("正则表达式",test) #第二步,调用模块函数
^的用法
import re #第一步,要引入re模块
a = re.findall("^匹配规则", "匹配规则这个字符串是否匹配")
#字符串开始位置与匹配规则符合就匹配,否则不匹配
[^a-z]反取,匹配出除字母外的字符,元字符如果写到字符集里就是反取
import re #第一步,要引入re模块
a = re.findall("[^a-z]", "匹配s规则这s个字符串是否s匹配f规则则re则则则") #反取,匹配出除字母外的字符
print(a) #以列表形式返回匹配到的字符串
#打印出 ['匹', '配', '规', '则', '这', '个', '字', '符', '串', '是', '否', '匹', '配', '规', '则', '则', '则', '则', '则']
✳字符的用法
-
需要字符串里完全符合,匹配规则,就匹配,(规则里的*元字符)前面的一个字符可以是0个或多个原本字符
-
匹配前一个字符0或多次,贪婪匹配前导字符有多少个就匹配多少个很贪婪
-
如果规则里只有一个分组,尽量避免用*否则会有可能匹配出空字符串
import re #第一步,要引入re模块
a = re.findall("匹配规则*", "这个字符串是否匹配规则则则则则") #需要字符串里完全符合,匹配规则,就匹配,(规则里的*元字符)前面的一个字符可以是0或多个原本字符
print(a) #以列表形式返回匹配到的字符串
#打印出 ['匹配规则则则则则']
+元字符的用法
- 需要字符串里完全符合,匹配规则,就匹配,(规则里的+元字符)前面的一个字符可以是1个或多个原本字符
- 匹配前一个字符1次或无限次,贪婪匹配前导字符有多少个就匹配多少个很贪婪
import re #第一步,要引入re模块
a = re.findall("匹配+", "匹配配配配配规则这个字符串是否匹配规则则则则则") #需要字符串里完全符合,匹配规则,就匹配,(规则里的+元字符)前面的一个字符可以是1个或多个原本字符
print(a) #以列表形式返回匹配到的字符串
#打印出 ['匹配配配配配', '匹配']
?元字符的用法
- 需要字符串里完全符合,匹配规则,就匹配,(规则里的?元字符)前面的一个字符可以是0个或1个原本字符
- 匹配一个字符0次或1次
- 还有一个功能是可以防止贪婪匹配
import re #第一步,要引入re模块
a = re.findall("匹配规则?", "匹配规这个字符串是否匹配规则则则则则") #需要字符串里完全符合,匹配规则,就匹配,(规则里的?元字符)前面的一个字符可以是0个或1个原本字符
print(a) #以列表形式返回匹配到的字符串
#打印出 ['匹配规', '匹配规则']
{}元字符,范围
- 需要字符串里完全符合,匹配规则,就匹配,(规则里的 {} 元字符)前面的一个字符,是自定义字符数,位数的原本字符
- {m}匹配前一个字符m次,{m,n}匹配前一个字符m至n次,若省略n,则匹配m至无限次
- {0,}匹配前一个字符0或多次,等同于*元字符
- {+,}匹配前一个字符1次或无限次,等同于+元字符
- {0,1}匹配前一个字符0次或1次,等同于?元字符
import re #第一步,要引入re模块
a = re.findall("匹配规则{3}", "匹配规这个字符串是否匹配规则则则则则") #{m}匹配前一个字符m次,{m,n}匹配前一个字符m至n次,若省略n,则匹配m至无限次
print(a) #以列表形式返回匹配到的字符串
#打印出 ['匹配规则则则']
[0-9a-zA-Z_]可以匹配一个数字、字母或者下划线
[0-9a-zA-Z_]+可以匹配至少由一个数字、字母或者下划线组成的字符串,比如’a100’,‘0_Z’,'Py3000’等等;
[a-zA-Z_][0-9a-zA-Z_]可以匹配由字母或下划线开头,后接任意个由一个数字、字母或者下划线组成的字符串,也就是Python合法的变量(类似__init)
[a-zA-Z_][0-9a-zA-Z_]{0, 19}更精确地限制了变量的长度是1-20个字符(前面1个字符+后面最多19个字符)。
参考源代码https://www.cnblogs.com/zjltt/p/6955965.html