-3
regex=re.compile(r"pattern_A(\d+)|pattern_B:(\d+)")
result=re.search(regex,string);

文字列「pattern_A9123213」と「pattern_B490329402」があり、「一致する文字列がありません」
の結果は[( '9123213'、'')]、[(''、 '490329402')]または[(''、 ' ')] ['9123213']、[' 490329402']、['']のような要素を1つだけ取得するにはどうすればよいですか。ありがとうございました!

4

2 に答える 2

1

最も簡単な方法はr"(pattern_A|pattern_B:)(\d+)"、正規表現として使用してから、2 番目の一致グループ ( ) を取得することre.search(regex,string).group(2)です。これが機能するのは、取得しようとしているグループが\d+両側で同じパターン ( ) であるためです。一般に、このケースを処理するには、複数の正規表現を使用する必要があります。

于 2012-09-28T20:30:41.507 に答える
0

re.compile はリストを返しません。コンパイルされた正規表現を返します。そのメソッドは、文字列の操作に使用できます。

于 2012-09-28T20:18:24.000 に答える