Python 3で正規表現または他のライブラリを使用して2点間の文字列を取得する方法は?
例: Blah blah ABC 取得する文字列 XYZ Blah Blah
ABC と XYZ は、取得する必要がある文字列の開始と終了を示す変数です。
Python 3で正規表現または他のライブラリを使用して2点間の文字列を取得する方法は?
例: Blah blah ABC 取得する文字列 XYZ Blah Blah
ABC と XYZ は、取得する必要がある文字列の開始と終了を示す変数です。
ABC
andXYZ
を後読みアサーションおよび先読みアサーションのアンカーとして使用します。
(?<=ABC).*?(?=XYZ)
後読み(?<=...)
アサーションは、 が前に付いたテキスト内の場所でのみ一致しますABC
。同様に、(?=XYZ)
が続く場所で一致しXYZ
ます。.*
これらは共に、表現を制限する 2 つのアンカーを形成し、あらゆるものに一致します。
このようなアンカーされたテキストはすべて、次のようにして見つけることができますre.findall()
。
for matchedtext in re.findall(r'(?<=ABC).*?(?=XYZ)', inputtext):
ABC
とXYZ
が変数の場合は、 re.escape()
(それらのコンテンツが正規表現構文として解釈されないようにするために) を使用し、補間します。
re.match(r'(?<={}).*?(?={})'.format(abc, xyz), inputtext)
これがあなたが望むものだと思います:
import re
match = re.search('ABC(.*)XYZ','Blah blah ABC the string to be retrieved XYZ Blah Blah')
print match.group(1)