re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
flags是匹配模式修饰符,见下表:(了解)
| 修饰符 | 描述 | 
|---|---|
| re.I | 使匹配对大小写不敏感 | 
| re.L | 做本地化识别(locale-aware)匹配 | 
| re.M | 多行匹配,影响 ^ 和 $ | 
| re.S | 使 . 匹配包括换行在内的所有字符 | 
| re.U | 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B. | 
| re.X | 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。 | 
| 参数 | 描述 | 
|---|---|
| pattern | 匹配的正则表达式 | 
| string | 要匹配的字符串。 | 
| flags | 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配 | 
返回:匹配成功re.match方法返回一个匹配对象,否则返回None。
| 匹配对象方法 | 描述 | 
|---|---|
| group(num=0) | 匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。 | 
| groups() | 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。 | 
事例代码如下:
import re
print(re.match('www', 'www.runoob.com').span()) # 在起始位置匹配,结果:(0,3)
print(re.match('com', 'www.runoob.com')) # 不在起始位置匹配,结果:None
line = "Cats are smarter than dogs"
matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I) # 有两个group,()
print(matchObj.group()) # 结果:Cats are smarter than dogs
print(matchObj.groups()) # 结果:('Cats', 'smarter')
print(matchObj.group(1)) # 结果:Cats
print(matchObj.group(2)) # 结果:smarter
参数和返回同上
re.search函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回,如果字符串没有匹配,则返回None,参数与返回与re.match完全一致。re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。
参数同上,返回列表,找不到则返回空列表
text = 'apple is my love $45, apple is delicouis $56'
ret = re.findall('\$\d+', text)
print(ret) #['$45', '$56']
ret = re.findall(r"html$","https://docs.python.org/3/whatsnew/3.6.html")
print (ret) # ['html'] text = "JGod is a handsome boy ,but he is a ider"
print(re.findall(r'\w*o\w*',text)) # 查找有o的单词
# 输出结果为:['JGod', 'handsome', 'boy']
参数同上;根据正则表达式的模式分隔符,split函数将字符串分割为列表,然后返回成功匹配的列表;注意:没有可匹配的项时,返回原来的字符串。
import re
s = 'abc, abc, defg, dds'
print(re.split('\W+',s)) # 相当于以非字母数字下划线分割 ['abc', 'abc', 'defg', 'dds']
# 如果加上括号,结果会同时返回去掉的值
print(re.split('(\W+)',s)) # ['abc', ', ', 'abc', ', ', 'defg', ', ', 'dds']
re.compile 函数用于编译正则表达式,生成一个正则表达式( re.Pattern )对象,供以上使用.
调模式为:pattern.函数名(string [,flags])。
import re
text = 'Hello World Wide Web'
pattern = re.compile(r'([a-z]+) ([a-z]+)', re.I) # pattern为编译后的模式对象 re.I 表示忽略大小写
m = pattern.match(text)
print(m.groups()) # 匹配成功,返回一个 Match 对象,结果:('Hello', 'World')
m = pattern.search(text)
print(pattern.findall(text)) # [('Hello', 'World'), ('Wide', 'Web')]
text = 'python 123 google 456 aa'
pattern = re.compile(r'\d+') # 查找数字
result1 = pattern.findall(text)
print(result1) # ['123', '456']
print(pattern.split(text)) # ['python ', ' google ', ' aa']