正则匹配
语法规则
字符串内容
\w 字母,下划线,数字
\s 任意空白字符
\d 匹配数字
使用大写,即为匹配相反
指定位置
^ 匹配开头
$ 匹配结尾
指定数量(贪婪与非贪婪)
* 匹配0或者多个
+ 匹配一个或多个
? 匹配0或者一个
转义匹配
使用\表示为文本,无特别意义。如 . 匹配除换行符以外的任意字符,但是如果目标字符串里面就包含 .就要使用转义匹配了。
import re
content = '(百度) www.baidu.com'
result = re.match('\(百度 \) www\.baidu\.com', content)
print(result)
re库使用
修饰符
正则表达式可以包含一些可选标志修饰符来控制匹配模式。
result = re.match('^He.*?(\d+).*?Demo$', content, re.S)
re.I使匹配对大小写不敏感
re.S使.匹配包括换行符在内的所有字符
match
import re
content = 'Hello 1234567 World_This is a Regex Demo'
result = re.match('^Hello\s(\d+)\sWorld', content)
print(result)
print(result.group())
print(result.group(1))
print(result.span())
一般用来检验字符串是否符合正则匹配规则。
search
import re
content = 'Extra stings Hello 1234567 World_This is a Regex Demo Extra stings'
result = re.match('Hello.*?(\d+).*?Demo', content)
print(result)
匹配出遇到的第一个字符串。
findall
results = re.findall('<li.*?href="(.*?)".*?singer="(.*?)">(.*?)</a>', html, re.S)
print(results)
print(type(results))
for result in results:
print(result)
print(result[0], result[1], result[2])
匹配多个字符串
sub
使用它来对文本进行一个对应的一个预处理。
import re
content = '54aK54yr5oiR54ix5L2g'
content = re.sub('\d+', '', content)
print(content)
compile
将正则表达式编译成一个正则表达式对象,以便复用。
import re
content1 = '2019-12-15 12:00'
content2 = '2019-12-17 12:55'
content3 = '2019-12-22 13:21'
pattern = re.compile('\d{2}:\d{2}')
result1 = re.sub(pattern, '', content1)
result2 = re.sub(pattern, '', content2)
result3 = re.sub(pattern, '', content3)
print(result1, result2, result3)

浙公网安备 33010602011771号