正则表达式在线验证:https://regex101.com
正则表达式=普通字符+特殊字符
特殊字符:
.:匹配除了换行符之外的任意单个字符
*:匹配前面的子表达式任意次(包括0次)
+:匹配前面的子表达式一次或多次
\:转义特殊字符
\d{m,n}:匹配数字m~n次,等同于[0-9]{m~n}
\D:匹配非数字字符,等同于[^0-9]
?:尽可能少的匹配,取前面的表达式一次或零次,在*、+后面加上?实现非贪婪匹配
\s:匹配任意一个空白字符(空格、tab、换行符)
\S:匹配任意一个不是空白符的字符
\w:匹配任意一个文字字符(字母、数字、下划线)
\W:匹配任意一个非文字字符(标点符号、空格)
[]:匹配几个字符任意之一
^:表示文本开头位置,也表示非
$:表示文本结束位置
():分组匹配
例子1:
内容:薪资是10-16k*16薪,北京东城区
表达式:\d+-\d+k[\*\d薪]*
结果:10-16k*16薪
分组匹配例子:
import re
content = """
16788888888我的手机号码1111
12566666666我的手机号码1111
13577777777我的手机号码1111
"""
re = re.compile("(\d+)我的手机号码(\d+)")
def get_value():
for one in re.findall(content):
print(one)
if __name__ == '__main__':
get_value()
结果:
('16788888888', '1111')
('12566666666', '1111')
('13577777777', '1111')