特定の 1 つの後に来る一連のアイテムのみを正規表現でキャプチャする方法を見つけようとしています。これにはPythonを使用しています。このようなものの 1 つの例はB <4>.<5> <6> A <1> m<2> . <3>
、1、2、および 3 のみをキャプチャする目的でテキストを使用することです。正規表現のようなもの A.*?<(.+?)>
が機能すると思いましたが、Python を使用して最後の 3 のみをキャプチャしre.findall
ます。これについて何か助けを得ることができますか?
質問する
79 次
3 に答える
2
このregex
モジュール(re
将来の python で置き換え予定) は、変数の後読みをサポートしているため、かなり簡単です。
s = "B <4>.<5> <6> A23 <1> m<2> . <3>"
import regex
print regex.findall(r'(?<=A\d+.*)<.+?>', s)
# ['<1>', '<2>', '<3>']
(私は物事を面白くするためA\d+
だけではなく使用しA
ています)。在庫に縛られている場合は、次のre
ような醜い回避策を余儀なくされます。
import re
print re.findall(r'(<[^<>]+>)(?=(?:.(?!A\d+))*$)', s)
# ['<1>', '<2>', '<3>']
または事前分割:
print re.findall(r'<.+?>', re.split(r'A\d+', s)[-1])
于 2013-10-06T18:49:00.363 に答える