正则表达式在 Python 中查找两个字符串之间的字符串

Posted

技术标签:

【中文标题】正则表达式在 Python 中查找两个字符串之间的字符串【英文标题】:Regex expression to find strings between two strings in Python 【发布时间】:2019-05-19 14:50:57 【问题描述】:

我正在尝试编写一个正则表达式,它返回一个位于其他两个字符串之间的字符串。例如:我想获取字符串以及位于字符串“15/08/2017”和“$610,000”之间的空格

a='172 211 342    15/08/2017  TRANSFER OF LAND   $610,000        CASH & MTGE'

应该返回

"TRANSFER OF LAND"

这是我到目前为止拼凑的表达方式:

re.search(r'15/08/2017(.*?)$610,000', a).group(1)

它不返回任何匹配项。我认为这是因为我们还需要考虑表达式中的空格。有没有办法在忽略空格的两个字符串之间查找字符串?

【问题讨论】:

因为需要转义$ 【参考方案1】:

使用正则表达式Lookbehind & Lookahead

例如:

import re

a='172 211 342 15/08/2017 TRANSFER OF LAND $610,000 CASH & MTGE'
print(re.search(r"(?<=15/08/2017).*?(?=\$610,000)", a).group())

输出:

 TRANSFER OF LAND 

【讨论】:

【参考方案2】:
>>> re.search(r'15/08/2017(.*)\$610,000',a).group(1)
'  TRANSFER OF LAND   '

由于$ 是一个正则表达式元字符(代表逻辑行的结尾),您需要将其转义以用作文字'$'

【讨论】:

【参考方案3】:

可能更容易使用find:

a = '172 211 342 15/08/2017 TRANSFER OF LAND $610,000 CASH & MTGE'
b = '15/08/2017'
c = '$610,000'

a[a.find(b) + len(b):a.find(c)].strip()

'土地转让'

【讨论】:

以上是关于正则表达式在 Python 中查找两个字符串之间的字符串的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python 正则表达式在两个变量之间查找 HTML

不止一次用正则表达式替换两个字符串之间的字符串,python

使用正则表达式查找两个字符串之间的多个匹配项

IntelliJ IDEA 查找两个字符之间任意内容正则表达式

正则表达式量词 - 两个字符之间的数量

正则表达式查找两个字符串的最长公共前缀