判断目标字符串是否符合特定的要求
\d 表示任意的一位数字 digit \d\d 表示任意的两位数字
\w 表示任意的一个字母或者数字 word
\s 表示任意的空格 space
. 表示任意的内容一般不单独使用123 abc!@ a.在a后面匹配任意的内容
* 表示*前面的内容出现0次或者多次
+ 表示+前面内容出现一次或者多次
? 表示前面的内容出现出现0次或者1次 a.?
^ 表示以什么开头的
$ 表示以什么结尾
{n} 表示内容重复n次 \d\d\d 可以写成 \d{3}
{n,m} 表示最少重复n次,最多重复m次
{,m} 最多重复m次
贪婪模式与非贪婪模式
正则表达式默认是贪婪模式 尽量找到所有的符合要求的内容
.* 称之为贪婪模式
content = 'a11qwewbabab'
pattern = re.compile('(a.*b)')
result = pattern.match(content)
print(result.group(0))
.*? 称之为非贪婪模式
pattern = re.compile('(a.*?b)')
result = pattern.match(content)
print(result)
print(result.group(0))
raw string 没有经过雕刻或者修改的字符串
会将字符串里面的转义字符失效
title = '123hello world'
# pattern = re.compile(r'\d\d\d')
pattern = re.compile(r'\d{3}')
result = pattern.match(title)
print(result.group(0))
匹配全国固话
pattern = re.compile(r'(\d{4})-(\d{8})')
result = pattern.match('0371-68686688')
print(result.group(0))
可以任意匹配几个
pattern = re.compile('((haha|heihei)balabala)')
result = pattern.match('hahabalabala')
print(result)
result = pattern.match('heiheibalabala')
print(result)
search模块
pattern = re.compile(r'you')
result = pattern.search('I love you ,I miss you, I hate you')
print(result)
print(result.group(0))
search找到字符串中第一个符合正则的内容,只找第一个
findall找到所有符合的内容
content = '12345君不见黄河之水天上来,55555'
pattern = re.compile(r'\d{5}')
result = pattern.findall(content)
print(result)
sub模块
content = '悟空对战牛魔王'
pattern = re.compile(r'悟\s*空')
result = pattern.sub('铁扇公主',content)
print(result)
content = '悟空对战牛魔王,八戒观战'
key_word = [
(r'悟空','铁扇公主'),
(r'牛魔王','沙僧'),
(r'八戒','红孩儿'),
]
for pattern,replace in key_word:
pattern = re.compile(pattern)
content = pattern.sub(replace,content)
print(content)
手机号正则表达式
pattern = re.compile(r'^((13[0-9])|(14[67])|(15[0-3])|(15[5-9])|(18[0|5-9]))\d{8}$')
result = pattern.match('14777898706')
print(result)