如何使用正则表达式或 Python 3 中的任何其他库获取两点之间的字符串?
例如: Blah blah ABC 要检索的字符串 XYZ Blah Blah
ABC 和 XYZ 是表示我必须检索的字符串的开头和结尾的变量。
如何使用正则表达式或 Python 3 中的任何其他库获取两点之间的字符串?
例如: Blah blah ABC 要检索的字符串 XYZ Blah Blah
ABC 和 XYZ 是表示我必须检索的字符串的开头和结尾的变量。
使用ABC
andXYZ
作为带有后视和前瞻断言的锚:
(?<=ABC).*?(?=XYZ)
后视断言仅在文本中以.(?<=...)
开头的位置匹配ABC
。同样,(?=XYZ)
在 后面的位置匹配XYZ
。它们一起形成了两个锚点,限制了.*
匹配任何东西的表达式。
您可以通过以下方式找到所有此类锚定文本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)