正则匹配

语法规则

字符串内容

\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())

一般用来检验字符串是否符合正则匹配规则。

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)
posted @ 2024-06-16 14:11  Ho1d_F0rward  阅读(172)  评论(0)    收藏  举报