Python正则表达式
Python 正则表达式¶
In [1]:
import re
pattern = re.compile(r'hello.*\!')
print(pattern)
match = pattern.match('hello,World! how are you?')
if match:
print(match.group)
re.compile(strPattern[,flag]¶
这个方法是Pattern类的工厂方法,用于将字符串形式的正则表达式编译为Pattern对象。 flag:匹配模式,取值可以使用按位或运算符‘|’表示同时生效,eg:re.l|re.M。
#flag可选值:
:re.l(re.IGNORECASE)忽略大小写(括号内是完整写法,下同)
: re.S(DOTALL)点任意匹配模式,改变‘.’行为
:re.L(LOCALE)使预定字符类\w \W \b \B \s \S取决于当前区域设定
:re.U(UNICODE)使预定字符类 \w \W \b \B \s \S \d \D 取决于unicode定义的字符属性
: re.X(VERBOSE): 详细模式。这个模式下正则表达式可以是多行,忽略空白字符,并可以加入注释
:re.M(MULTILINE)多行模式,该表‘^’和'$'的行为
#两种方式等价
regex_1 = re.compile(r"""\d + #数字部分 \. #小数点部分 \d * #小数的数字部分""",re.X)
regex_2 = re.compile(r"\d+\.\d*")
Match¶
Match对象是一次匹配的结果,包含了很多关于此次匹配的信息,可以使用Match提供的可读属性或方法来获取这些信息。
match属性:¶
•string: 匹配时使用的文本。
•re: 匹配时使用的Pattern对象。
•pos: 文本中正则表达式开始搜索的索引。值与Pattern.match()和Pattern.seach()方法的同名参数相同。
•endpos: 文本中正则表达式结束搜索的索引。值与Pattern.match()和Pattern.seach()方法的同名参数相同。
•lastindex: 最后一个被捕获的分组在文本中的索引。如果没有被捕获的分组,将为None。
•lastgroup: 最后一个被捕获的分组的别名。如果这个分组没有别名或者没有被捕获的分组,将为None。
In [2]:
import re
m = re.match(r'(\w+) (\w+)(?P<sign>.*)', 'hello World!')
print ("m.string:", m.string)
print ("m.re:", m.re)
print ("m.pos:", m.pos)
print ("m.endpos:", m.endpos)
print ("m.lastindex:", m.lastindex)
print ("m.lastgroup:", m.lastgroup)
print ("m.group(1,2):", m.group(1, 2))
print ("m.groups():", m.groups())
print ("m.groupdict():", m.groupdict())
print ("m.start(2):", m.start(2))
print ("m.end(2):", m.end(2))
print ("m.span(2):", m.span(2))
print (r"m.expand(r'\2 \1\3'):", m.expand(r'\2 \1\3'))
Pattern¶
Pattern对象时一个编译好的正则表达式,通过Pattern提供的一系列方法可以对文本进行匹配查找。
pattern不能直接实列化,必须使用re.compile()进行构造。
Pattern提供几个可读属性用于获取表达式的相关信息:
pattern:编译时用的表达式字符串
flags:编译时用的匹配模式。数字形式
groups:表达式中分组的数量
groupindex:以表达式中有别名的组的别名为键、以该组对应的编号为值的字典,没有别名的组不包含在内。
In [3]:
import re
p = re.compile(r'(\w+)(\w+)(?P<sign>.*)',re.DOTALL)
print("p.pattern:",p.pattern)
print("p.flags:",p.flags)
print("p.groups:",p.groups)
print("p.groupindex",p.groupindex)
本文来自博客园,作者:爱吃帮帮糖,转载请注明原文链接:https://www.cnblogs.com/monkeyT/p/10660822.html