在 python 中使用正则表达式中的 lookbehind 提取字符串直到 '\n' 字符。它可以有字母数字字符、特殊字符和 space 也

extract strings till ' \n ' character using lookbehnd in regex in python. And it can have alphanumeric characters, special characters and space also

text = '我的叔叔住院了。\n 他已经患有 10 个月了。\n 医院的地址是\nApollo Health City Campus, Jubilee Hills, Hyderabad - 500 033。'

现在我想提取医院的地址,即“Apollo Health City Campus, Jubilee Hills, Hyderabad -**”使用正则表达式后视,我使用了以下代码但是我想要一个可以帮助我提取字符串的表达式,直到六位密码之前的 \n 字符,即“500 033” 目前正在尝试提取 6 个字符串,但我想要一个可以帮助我获取所有字符串的正则表达式,直到 '\n' .

r'((\w\S+\s+){1,6})(?=500 033)'

预期输出 - ' Apollo Health City Campus, Jubilee Hills, Hyderabad - ' 即 \n

之前的所有字符串

为什么不简单地使用 \n 拆分并获取最后一个字符串?

text = ' My uncle is admitted in the hospital.\n He has been suffering from 10 months.\n The address of the hospital is \nApollo Health City Campus, Jubilee Hills, Hyderabad - 500 033. '
print(text.split('\n')[-1])

如果您确定该字符串将包含密码。即 6 位数字,另一种方法可以是:

text = ' My uncle is admitted in the hospital.\n He has been suffering from 10 months.\n The address of the hospital is \nApollo Health City Campus, Jubilee Hills, Hyderabad - 500 033. '
for x in text.split('\n'):
    if [idx.isdigit() for idx in x].count(True)==6:
        print(x)

我只在字符串中添加了 6 位数字的支票。可以根据自己的需要修改。