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山かっこなどをエスケープする必要がないようにします。

しかし、私の推測では、beautifulsoup や他の同様のパッケージのような html/xml パーサーを使用することがより良い解決策です。

于 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 に答える