10

如何使用正则表达式或 Python 3 中的任何其他库获取两点之间的字符串?

例如: Blah blah ABC 要检索的字符串 XYZ Blah Blah

ABC 和 XYZ 是表示我必须检索的字符串的开头和结尾的变量。

4

2 回答 2

12

使用ABCandXYZ作为带有后视和前瞻断言的锚:

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

后视断言仅在文本中以.(?<=...)开头的位置匹配ABC。同样,(?=XYZ)在 后面的位置匹配XYZ。它们一起形成了两个锚点,限制了.*匹配任何东西的表达式。

您可以通过以下方式找到所有此类锚定文本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 回答