正则表达式在 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