Perl から Python に切り替えたばかりで、reモジュールにがっかりしています。Python の $1 に相当するもの、または正規表現のその他の特殊変数を探しています。Perl では、これを使用します。Python
でも同じことをしようとしています。ありがとう!
$_ =
"<name>Joe</name>";
s/<(.)>(.)<[/]
(.*)>/$2/;
10535 次
2 に答える
14
\2
Python の後方参照または一致グループで を使用することもできます。
このような:
>>> re.sub(r'(\w+) (\w+)',r'\2 \1','Joe Bob')
'Bob Joe'
または名前付き置換 (後に Perl に移植された Python の革新):
>>> re.sub(r'(?P<First>\w+) (?P<Second>\w+)',r'\g<Second> \g<First>','Joe Bob')
'Bob Joe'
>>> ma=re.search(r'(?P<First>\w+) (?P<Second>\w+)','George Bush')
>>> ma.group(1)
'George'
>>> ma.group('Second')
'Bush'
しかし、確かに、最近の Perl のものと比較すると、Python の re モジュールは少し弱いです。
ファースト クラスの正規表現モジュールの場合は、新しい正規表現モジュールをインストールします。これは Python 3.4 の一部として予定されており、非常に優れています。
于 2012-08-11T02:39:21.290 に答える
4
re.MatchObject.group() メソッドが必要です。
import re
var = "<name>Joe</name>"
match = re.search(r"<(.)>(.)<[/](.*)>", var)
print match.group(2)
XML などのタグベースのマークアップ言語を解析するために正規表現を使用しているようです。代わりに ElementTree などのパーサーを使用する必要がある理由については、次のリンクを参照してください: https://stackoverflow.com/a/1732454/1032785
于 2012-08-11T02:35:27.813 に答える