我需要您的帮助,因为我想在列表中使用正则表达式来仅获取关键字后的字符串。
my_list 看起来像:
['Paris, 458 boulevard Saint-Germain', 'Marseille, 29 rue Camille Desmoulins', 'Marseille, 1 chemin des Aubagnens']
正则表达式:
re.compile(ur'(?<=rue|boulevard|quai|chemin).*', re.MULTILINE)
处理后的预期列表:
['Saint-Germain', 'Camille Desmoulins', 'des Aubagnens']
谢谢你的帮助。
请您参考如下方法:
看来您的正则表达式在 Python 中不起作用,它抛出的错误是look-behind requires fixed-width pattern。
此外,请注意正则表达式中的 re.MULTILINE 标志是多余的,因为没有 ^ 或 $ 来重新定义行为对于模式。
这是您可以使用的代码:
import re
lst = ['Paris, 458 boulevard Saint-Germain', 'Marseille, 29 rue Camille Desmoulins', 'Marseille, 1 chemin des Aubagnens']
p = re.compile(r'.*(?:rue|boulevard|quai|chemin)')
print [p.sub('', x).strip() for x in lst]
结果:
['Saint-Germain', 'Camille Desmoulins', 'des Aubagnens']
r'.*(?:rue|boulevard|quai|chemin)' 正则表达式匹配
.*- 0 个或多个任意字符(?:rue|boulevard|quai|chemin)- 用|分隔的选项中的 1 个。
然后用re.sub 删除匹配的文本。
注意 您可以强制整个单词与 \b 字边界匹配,以便匹配 chemin 而不是 chemins:
r'.*\b(?:rue|boulevard|quai|chemin)\b'
