Python RegEx 查找接近之前和/或之后特定单词的数值

问题描述

我有一个看起来像这样的字符串:

“公寓自 2021 年起出租给学生。月租金为 850 欧元。额外费用为水电费(150 欧元)。”

我正在寻找与“租金”和“欧元”非常接近(例如在 20 个字符内)的数值。

我不想得到“2021”,也不想得到“150”——我想得到“850”。

目前我正在使用此代码,但最终以“2021”结尾。你能帮我吗?

非常感谢! 菲利克斯


txt = "The apartment is rented out to a student since 2021. The monthly rent is 850 Euro. Additional costs are utilities (150 Euro)."

txt = ("".join(txt)).strip()

m = re.search(r'(?:((?i:rent)|JNKM)[\w\€\:\(\)\.\!\?\-\\,\ ]{0,40}(\d+[\,\.]?\d*)|(?:(\d+[\,\.]?\d*)[\w\€\:\(\)\.\!\?\-\\,40}((?i:rent)|JNKM)))',"".join(txt))

txtrent = m.group().replace(".","").replace(",",".")

txtrent = re.findall(r"-?\d+[\,\.]?\d*",txtrent    )

zustand = txtrent

print(zustand)```

解决方法

看看这个:


txt = "The apartment is rented out to a student since 2021. The monthly rent is 850 Euro. Additional costs are utilities (150 Euro)."
txt = txt.replace('.','')

pattern = '\s'
result = re.split(pattern,txt)
txt = result[result.index('rent'): result.index('Euro')+1]
for i in txt:
    if i.isdigit():
        print(i)