1

私は次のような文字列を持っています

abcde1234_abcde

Python reを使用して抽出したい1234_abcdeのですが、有効な文字列には少なくとも1つの数字が含まれ、その後に_ (underscore)が続きます。

私が使用しているとき、それは結果として.*(?P<required>\d+\_.*)私に与えていません4_abcde1234_abcde

これには助けが必要です。

4

3 に答える 3

3

なぜ一致しないのですか:

\d+_.*

これは 1 つ以上の数字\d+とアンダースコアに一致_し、その後は文字列または行の終わりまですべてをキャプチャします。

次のように、貪欲なバージョンのアスタリスクから消極的な(怠惰な)バージョンに切り替えた場合、元の表現は機能していたはずです*?

 .*?(?P<required>\d+_.*)

正規表現101のデモ

于 2013-11-07T15:00:53.230 に答える
0

解決策は次のとおりです。

 re.match(r'.*?(?P<required>\d+\_.*)', 'abcde1234_abcde').group(1)

元の式では、 after.*なし?で可能な限り一致させようとするため、最後の桁のみが取得されます。

于 2013-11-07T15:15:33.653 に答える
0

試してみてください:

\D*(?P<required>\d+_.*)
于 2013-11-07T15:40:35.193 に答える