10

Python 3で正規表現または他のライブラリを使用して2点間の文字列を取得する方法は?

例: Blah blah ABC 取得する文字列 XYZ Blah Blah

ABC と XYZ は、取得する必要がある文字列の開始と終了を示す変数です。

4

2 に答える 2

12

ABCandXYZを後読みアサーションおよび先読みアサーションのアンカーとして使用します。

(?<=ABC).*?(?=XYZ)

後読み(?<=...)アサーションは、 が前に付いたテキスト内の場所でのみ一致しますABC。同様に、(?=XYZ)が続く場所で一致しXYZます。.*これらは共に、表現を制限する 2 つのアンカーを形成し、あらゆるものに一致します。

このようなアンカーされたテキストはすべて、次のようにして見つけることができますre.findall()

for matchedtext in re.findall(r'(?<=ABC).*?(?=XYZ)', inputtext):

ABCXYZが変数の場合は、 re.escape()(それらのコンテンツが正規表現構文として解釈されないようにするために) を使用し、補間します。

re.match(r'(?<={}).*?(?={})'.format(abc, xyz), inputtext)
于 2013-06-17T15:41:50.180 に答える
4

これがあなたが望むものだと思います:

import re
match = re.search('ABC(.*)XYZ','Blah blah ABC the string to be retrieved XYZ Blah Blah')
print match.group(1)
于 2013-06-17T15:42:00.983 に答える