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)

例子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
上一篇下一篇

猜你喜欢

热点阅读