将perl正则表达式转换为python正则表达式

时间:2013-10-29 21:49:10

标签: python regex perl

我试图将perl正则表达式转换为python等价物。

在perl中排队:

($Cur) = $Line =~ m/\s*\<stat\>(.+)\<\/stat\>\s*$/i;

我尝试了什么,但似乎无法发挥作用:

m = re.search('<stat>(.*?)</stat>/i', line)
cur = m.group(0)

2 个答案:

答案 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)