私は次のような文字列を持っています
abcde1234_abcde
Python reを使用して抽出したい1234_abcdeのですが、有効な文字列には少なくとも1つの数字が含まれ、その後に_ (underscore)が続きます。
私が使用しているとき、それは結果として.*(?P<required>\d+\_.*)私に与えていません4_abcde1234_abcde
これには助けが必要です。
私は次のような文字列を持っています
abcde1234_abcde
Python reを使用して抽出したい1234_abcdeのですが、有効な文字列には少なくとも1つの数字が含まれ、その後に_ (underscore)が続きます。
私が使用しているとき、それは結果として.*(?P<required>\d+\_.*)私に与えていません4_abcde1234_abcde
これには助けが必要です。
なぜ一致しないのですか:
\d+_.*
これは 1 つ以上の数字\d+とアンダースコアに一致_し、その後は文字列または行の終わりまですべてをキャプチャします。
次のように、貪欲なバージョンのアスタリスクから消極的な(怠惰な)バージョンに切り替えた場合、元の表現は機能していたはずです*?。
.*?(?P<required>\d+_.*)
解決策は次のとおりです。
re.match(r'.*?(?P<required>\d+\_.*)', 'abcde1234_abcde').group(1)
元の式では、 after.*なし?で可能な限り一致させようとするため、最後の桁のみが取得されます。
試してみてください:
\D*(?P<required>\d+_.*)