目录
一:模块, re和regex
内置的re
模块可以提供一些基础的匹配功能,并且具有更高的性能,如果只需要基础的可能是更好的选择。regex
是第三方模块需要安装,如果需要更高级的功能,并且愿意使用第三方库,那么可以考虑使用regex
库。
二:匹配规则
1:全匹配,返回所有匹配的列表
content = 're25656 6yu78jh'
pattern = re.compile("[a-zA-Z]+") #只匹配字母
all = pattern.findall(content) #匹配结果返回列表
print(all)
2:从头匹配,只匹配一个就返回
content = 're25656 6yu78jh'
pattern = re.compile("[a-zA-Z]+") #只匹配字母
match = pattern.match(content) #匹配对应内容
if match:
print(match.group())
3:全匹配,只匹配一个就返回
content = '25656 6yu78jh'
pattern = re.compile("[a-zA-Z]+") #只匹配字母
search = pattern.search(content) #匹配对应内容
if search:
print(search.group())
三:分隔规则
content : 原始字符串
str:分隔符号/表达式
1:按字符分隔
str = '你好' #按照str分隔
content = 'a ty5tye 你好y1s2tyc'
result = re.split(str,content) print(result)
2:按数字分隔
content = 'a ty5tye 你好y1s2tyc' str = '\d' #按照str分隔 result = re.split(str,content) print(result) #i li你好ke mu你好s你好ic
四:替换规则
str:替换字符串
content:原始字符串
repl = 'a' 待替换字符串/表达式
1:按字符替换
repl = 'a' result = re.sub(repl,'你好',content) print(result)
2:按表达式替换
repl = '\d' result = re.sub(repl,'你好',content) print(result)
五:模糊匹配规则
content = 'a ty5tye 你好y1s2tyc56yec' #待匹配字符串
result = regex.findall('(?:tye){s<=1}', content) #匹配 tye最多有一个字符不一样 print(result)
附:REgex基础语法
语法 说明
\d 匹配一个数字字符
\D 匹配一个非数字字符
\s 匹配任何不可见字符(空格、制表符、换行符等)
\S 匹配任何可见字符
\w 匹配任何单词字符
\W 匹配任何非单词字符
. 匹配所有字符
^ 从字符串开头开始匹配,比如^\d表示以一个数字字符开头
$ 从字符串末尾开始匹配,比如\d$表示以一个数字字符结尾
* 匹配前一个字符任意次
+ 匹配前一个字符一次或多次
? 匹配前一个字符零次或一次
{m} 匹配前一个字符m次
{m,n} 匹配前一个字符最少m次最多n次
\ 转义字符
[] 比如[a-z]表示匹配从a到z之间的所有字符串
| 或,比如A|B表示匹配A或B
() 精确匹配括号中指定的模式