0

特定の 1 つの後に来る一連のアイテムのみを正規表現でキャプチャする方法を見つけようとしています。これにはPythonを使用しています。このようなものの 1 つの例はB <4>.<5> <6> A <1> m<2> . <3>、1、2、および 3 のみをキャプチャする目的でテキストを使用することです。正規表現のようなもの A.*?<(.+?)>が機能すると思いましたが、Python を使用して最後の 3 のみをキャプチャしre.findallます。これについて何か助けを得ることができますか?

4

3 に答える 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 に答える