python正则表达式2
2021-03-29 本文已影响0人
闲云野鹤_23dd
python正则表达式2
re.match()匹配多个
re.match( r'(.*) are (.*?) .*', line, re.M|re.I)
字符串前面的r是为了防止字符转义的
(.*) : 表达式1匹配到 are 截止
(.*?) : 表达式2 匹配到第一个空格截止,?表示非贪婪匹配
例子:
import re
line = "Cats are smarter than dogs"
# .* 表示任意匹配除换行符(\n、\r)之外的任何单个或多个字符
matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)
if matchObj:
print ("matchObj.group() : ", matchObj.group())
print ("matchObj.group(1) : ", matchObj.group(1))
print ("matchObj.group(2) : ", matchObj.group(2))
else:
print ("No match!!")
输出:
matchObj.group() : Cats are smarter than dogs
matchObj.group(1) : Cats
matchObj.group(2) : smarter
表达式1 的匹配结果可以使用 matchObj.group(1)获取匹配值,其余表达式依次类推
matchObj.group() 代表原 语句
re.search()
re.search 扫描整个字符串并返回第一个成功的匹配。
使用语法 与 match类似
语法:
re.search(pattern, string, flags)
- pattern: 正则表达式
- string: 要匹配的字符串
- flags: 可选参数,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等
例子1:
不管是否是在字符开头匹配,都可以匹配到
import re
print(re.search('软件', '软件测试工程师').span()) # 在起始位置匹配
print(re.search('测试', '软件测试工程师').span()) # 不在起始位置匹配
输出
(0, 3)
(11, 14)
例子2:
正则表达式匹配多个用法与 match一样
import re
line = "Cats are smarter than dogs"
searchObj = re.search( r'(.*) are (.*?) .*', line, re.M|re.I)
if searchObj:
print ("searchObj.group() : ", searchObj.group())
print ("searchObj.group(1) : ", searchObj.group(1))
print ("searchObj.group(2) : ", searchObj.group(2))
else:
print ("Nothing found!!")
输出:
searchObj.group() : Cats are smarter than dogs
searchObj.group(1) : Cats
searchObj.group(2) : smarter