(一)什么是正则表达式
还早呢过这表达式是对字符串操作的一种逻辑公式,就是用实现定义好的一些特定的字符,及这些特定的字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑
ps:正则表达式非python独有,使用re模块即可实现
(二)案例
re.match
语法格式:re.match(pattern,string,flag=0)
最常规的匹配:
最常规的匹配,表示匹配的结果为最原始的,中规中矩的匹配出结果
代码展示:
import re
content = 'Hello 123 4567 World_This is a Regex Demo'
print(len(content))
result = re.match('^Hello\s\d\d\d\s\d{4}\s\w{10}.*Demo$', content)
print(result)
print(result.group())
print(result.span())
知识点:
(1).group()表示的是返回正则匹配的结果
(2).span()表示返回正则匹配的范围
泛匹配
泛匹配,表示将正则匹配的字符缩短,但得到的是何上方一样的
结果
代码展示:
import re
content = 'Hello 123 4567 World_This is a Regex Demo'
result = re.match('^Hello.*Demo$', content)
print(result)
print(result.group())
print(result.span())
知识点:
(1) .* 可以匹配出除去换行以外的任意字符
匹配目标
匹配目标就是将需要的字符匹配出来
代码展示:
import re
content = 'Hello 1234567 World_This is a Regex Demo'
result = re.match('^Hello\s(\d+)\sWorld.*Demo$', content)
print(result)
print(result.group(1))
print(result.span())
知识点:
(1)()匹配括号内的表达式,也表示一个组
(2)+ 匹配1个或多个的表达式
* 匹配0个或多个的表达式
(3).group(1)—输出第一个带有()的目标
贪婪匹配
在贪婪匹配中匹配出来的结果有可能不是我们想要的结果
import re
content = 'Hello 1234567 World_This is a Regex Demo'
result = re.match('^He.*(\d+).*Demo$', content)
print(result)
print(result.group(1))
非贪婪匹配
代码展示:
import re
content = 'Hello 1234567 World_This is a Regex Demo'
result = re.match('^He.*?(\d+).*Demo$', content)
print(result)
print(result.group(1))
知识点:? 匹配0个或1个由前面的正则表达式定义的片段,为非贪婪方式,匹配尽可能少的字符
匹配模式
当出现换行的时候,.*?*是不适用的,这时
我们需要使用re.s来实现,这样.*就可以代表换行了
代码展示:
import re
content = '''Hello 1234567 World_This
is a Regex Demo
'''
result = re.match('^He.*?(\d+).*?Demo$', content, re.S)
print(result.group(1))
转义
当有些转移字符出现在字符串中,需要使用’\’来消除他的另外一种含义
代码展示:
import re
content = 'price is $5.00'
result = re.match('price is \$5\.00', content)
print(result)
ps:以上均为学习崔庆才python3爬虫的学习笔记