1

我正在尝试将 perl 正则表达式转换为 python 等效项。

perl中的行:

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

我尝试过的,但似乎没有用:

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

2 回答 2

5

几乎/i意味着不区分大小写

m = re.search(r'<stat>(.*?)</stat>',line,re.IGNORECASE)

还可以r在字符串上使用修饰符,这样您就不需要转义尖括号之类的东西。

但我的猜测是更好的解决方案是使用 html/xml 解析器,如 beautifulsoup 或其他类似包

于 2013-10-29T21:51:51.007 回答
3

类似于以下内容...

r是 Python 用于正则表达式模式的原始字符串表示法,为了避免转义,在前缀之后是您的正则表达式跟随您的字符串数据。re.I用于不区分大小写的匹配。

请参阅re文档更详细地解释这一点。

要找到您的匹配项,您可以使用MatchObjectgroup()的方法,如下所示:

cur = re.search(r'<stat>([^<]*)</stat>', line).group(1)

使用search()仅匹配第一次出现,使用findall()匹配所有出现。

matches = re.findall(r'<stat>([^<]*)</stat>', line)
于 2013-10-29T23:46:20.523 回答