re.I 使匹配对大小写不敏感
re.L 做本地化识别(locale-aware)匹配
re.M 多行匹配,影响 ^ 和 $
re.S 使 . 匹配包括换行在内的所有字符
re.U 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
re.X 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。
import re
懒惰匹配
Str = “abcdacsdn”
regexL = "a.*?d"
regL = re.compile(regexL)
listL = re.findall(regL, str)
print(listL)
懒惰匹配结果
[‘abcd’, ‘acsd’]
贪婪匹配
Str = “abcdacsdn”
regexT = "a.*d"
regT = re.compile(regexT)
listT = re.findall(regT, str)
print(listT)
贪婪匹配结果
[‘abcdacsd’]
re.match函数
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
print(re.match('www', 'www.runoob.com').span()) # 在起始位置匹配
print(re.match('com', 'www.runoob.com')) # 不在起始位置匹配
(0, 3)
None
re.search方法
re.search 扫描整个字符串并返回第一个成功的匹配。
print(re.search('abc','abcdegf').span())
(0, 3)
print(re.search('egf','abcdegf').span())
(4, 7)
re.sub
用于替换字符串中的匹配项
phone="2004-959-559 # 啊哈哈"
num = re.sub(r'#.*$',"",phone)
print("电话号码:",num)
---------------------------------------------------------
输出:电话号码: 2004-959-559
num = re.sub(r'\D',"",phone)
print("电话号码:",num)
------------------------------------------
输出:电话号码: 2004959559
re.compile
compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象
a = re.compile(r'(\D+)(\d+)')
m = a.match('asdwf123dwf2344asdwf')
print(m)
-----------------------------------------------------
输出<re.Match object; span=(0, 8), match='asdwf123'>
a = re.compile(r'(\D+)(\d+)')
m = a.findall('asSADwf123dwf2344asdwf')
print(m)
----------------------------------------------
输出[('asSADwf', '123'), ('dwf', '2344')]
re.finditer
和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。
it = re.finditer(r"\d+","12a32bc43jf3")
for match in it:
print (match.group() )
输出:
12
32
43
3