我试图将perl正则表达式转换为python等价物。
在perl中排队:
($Cur) = $Line =~ m/\s*\<stat\>(.+)\<\/stat\>\s*$/i;
我尝试了什么,但似乎无法发挥作用:
m = re.search('<stat>(.*?)</stat>/i', line)
cur = m.group(0)
答案 0 :(得分:5)
几乎/i
表示不区分大小写
m = re.search(r'<stat>(.*?)</stat>',line,re.IGNORECASE)
也可以在字符串上使用r
修饰符,这样就不需要像尖括号一样转义。
但我的猜测是更好的解决方案是使用像beautifulsoup或其他类似软件包的html / xml解析器
答案 1 :(得分:3)
以下内容......
r
是Python的正则字符串模式的原始字符串表示法,并且在前缀出现在字符串数据后面的正则表达式时避免转义。 re.I
用于不区分大小写的匹配。
请参阅re
文档,详细说明这一点。
要查找匹配项,您可以使用 MatchObject 的group()
方法,如下所示:
cur = re.search(r'<stat>([^<]*)</stat>', line).group(1)
使用search()
仅匹配第一次匹配,请使用findall()
匹配所有匹配项。
matches = re.findall(r'<stat>([^<]*)</stat>', line)