基础的正则表达式规则
基础表达式
表达式 | 含义 |
---|---|
abc | 匹配文本中的abc 固定内容 |
[abc] | 匹配a或b或c |
q[abc] | 匹配qa或qb或qc |
[^abc] | 匹配除了a、b、c之外的其他字符 |
[a-z] | 匹配a到z的任意一个字符 |
[0-9] | 匹配0-9的任意一个字符 |
. | 匹配除换行符以外的任意一个字符 |
.+ | 匹配除换行符以外的任意一个或多个字符(贪婪匹配,尽量匹配长的) |
.+? | 匹配除换行符以外的任意一个或多个字符(非贪婪匹配,匹配短的) |
\w | 代指字母或数字或下划线(汉字) |
\d | 匹配一个数字 |
\d+ | 匹配一个或多个数字 |
\s | 匹配任意一个空白符,包括空格、制表符等 |
与数量相关
表达式 | 含义 |
---|---|
* | 重复0次或多次 |
2*b | 2出现0次或多次,例如:b 、2b 、22b |
+ | 重复1次或多次 |
? | 重复0次或1次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次,包括n,m |
括号(分组)
提取数据区域:
表达式 | 含义 |
---|---|
151(2\d{5}) | 匹配成功之后只会提取括号中的值。 |
151(2\d{5}|r\w+) | 括号中使用了管道符表示或的关系。 |
151(2\d)* | 括号中的内容出现0次或多次。 |
单个括号
1
2
3
4
5import re
string ="我才不是有钱人,151288876"
pattern = "151(2\d{5})"
result = re.findall(pattern,string)
print(result) # ['288876']多个括号并列
1
2
3
4
5import re
string ="我才不是有钱人,151288876"
pattern = "1(5)1(2\d{5})"
result = re.findall(pattern,string)
print(result) # [('5', '288876')]括号嵌套
1
2
3
4
5import re
string ="我才不是有钱人,151288876"
pattern = "(151(2\d{5}))"
result = re.findall(pattern,string)
print(result) # [('151288876', '288876')]获取指定区域+“或”条件:
1
2
3
4
5import re
string = "我才不是有钱人,151288876,151aroot,151ajvxovidjsft"
pattern = "151(2\d{5}|a\w+t)"
result = re.findall(pattern, string)
print(result) # ['288876', 'aroot', 'ajvxovidjsft']
起始和结束
一般用于数据校验。
^
开始$
结束1
2
3
4
5import re
string = "151288876,151aroot,151ajvxovidjsft"
pattern = "^151(2\d{5}|a\w+t)$"
result = re.findall(pattern, string)
print(result) # []1
2
3
4
5import re
string = "151ajvxovidjsft"
pattern = "^151(2\d{5}|a\w+t)$"
result = re.findall(pattern, string)
print(result) # ['ajvxovidjsft']
特殊字符
正则表达式中* . \ {} ()
等具有特殊的含义,如果要在正则中匹配他们,需要进行转义。
\
转义字符
python中的re模块
findall, 获取匹配到的所有数据
match,从起始位置开始匹配符合规则的表达式,未匹配成功返回None。一开始就不符合就是None。匹配成功返回一个特殊的对象,通过
.group()
方法可以获取到。search, 浏览整个文本去匹配第一个,未匹配成功返回None,成功返回特殊对象,同上。
sub,替换匹配成功的位置。
sub(pattern,"修改的内容",text,num)
num是一个数字,可以不填写,如果填写了,表示替换前num个。split,根据匹配成功后的位置进行分割。同样可以添加数字限定前几个。
finditer,返回一个迭代器。可以遍历的过程中逐渐拿到数据。
分组命名空间的使用:
?P<xxx>正则
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 偷袈裟的小黑熊's blog!