RE模块字符串操作

2020-01-15  本文已影响0人  罗泽坤

RE模块字符串操作

re.match(pattern,string,flags)

re.search(pattern,string,flags)

re.findall(pattern,string,flags)

参数说明

1.pattern:匹配模板

2.string:匹配字符串

3.flags:可选参数,用于控制匹配方式,如是否区分大小写

re.sub(pattern,repl,string,count,flag)

参数说明

1.pattern:匹配模板

2.repl:表示替换成的字符串

3.string:表示被替换的字符串

3.count:表示替换最大次数

re.split(pattern,string,[maxsplit],[flags])

参数说明

1.string:分割字符串

2.maxplit:最大分割次数

import re
pattern = r'mr_\w+'
string = 'MR_one mr_two'
match = re.match(pattern,string,re.I)
print(match)
print(match.string)   #提取要匹配的字符串
print(match.start())    #匹配起始位置
print(match.end())      #匹配结尾位置
print(match.span())     #匹配起始结尾位置元组
print(match.group())   #匹配的数据
<_sre.SRE_Match object; span=(0, 6), match='MR_one'>
MR_one mr_two
0
6
(0, 6)
MR_one
string = '321  Mr_luo'
search = re.search(pattern,string,re.I)
print(search.string)
print(search.group())
321  Mr_luo
Mr_luo
string = 'dsadsa 123 dsad 123 dsa 123 dsa 123'
pattern = '[0-9]{1,3}'
findall = re.findall(pattern,string)
print(findall)
['123', '123', '123', '123']
pattern = '[0-9]{1,3}'
repl = 'SSS'
print('替换之前:',string)
sub = re.sub(pattern,repl,string)
print('替换之后:',sub)
替换之前: dsadsa 123 dsad 123 dsa 123 dsa 123
替换之后: dsadsa SSS dsad SSS dsa SSS dsa SSS
print('分割之前:',sub)
pattern = '[a|s]'
split = re.split(pattern,sub,0,re.I)
print('分割之后:',split)
分割之前: dsadsa SSS dsad SSS dsa SSS dsa SSS
分割之后: ['d', '', 'd', '', ' ', '', '', ' d', '', 'd ', '', '', ' d', '', ' ', '', '', ' d', '', ' ', '', '', '']
# 匹配IP地址
import re
pattern1 = r'[1-9]{1,3}(\.[0-9]{1,3}){3}'
pattern2 = r'[1-9]{1,3}(\.[0-9]{1,3}){2}'
pattern3 = r'([1-9]{1,3}(\.[0-9]{1,3}){2})'
pattern4 = r'([1-9]{1,3}(\.[0-9]{1,3}){3})'

string = '193.168.1.1 192.168.1.66'
findall1 = re.findall(pattern1,string)
print(findall1)
findall2 = re.findall(pattern2,string)
print(findall2)
findall3 = re.findall(pattern3,string)
print(findall3)
findall4 = re.findall(pattern4,string)
print(findall4)
['.1', '.66']
['.1', '.1']
[('193.168.1', '.1'), ('192.168.1', '.1')]
[('193.168.1.1', '.1'), ('192.168.1.66', '.66')]
for item in findall4:
    print(item[0])
193.168.1.1
192.168.1.66

由上面的例子可以看到当分组里面套了分组的时候程序是如何运行的
pattern3 = r'([1-9]{1,3}(.[0-9]{1,3}){2})'
pattern4 = r'([1-9]{1,3}(.[0-9]{1,3}){3})'
如这两个表达式在匹配的时候先忽略内层括号,考虑最外面一层()进行匹配,然后在匹配内层括号内的,然后把内层与外层的匹配值合并成一组
(.[0-9]{1,3}){2})
(.[0-9]{1,3}){3})
这两个表达式的意思是重复匹配表达式(.[0-9]{1,3}),2、3次且取最后一次匹配值

上一篇 下一篇

猜你喜欢

热点阅读