【发布时间】:2018-07-25 08:10:24
【问题描述】:
# coding=utf-8
import re
m = "Hola esto es un ejemplo Objeto: esta es una de, las palabras."
keywords = ['Objeto:', 'OBJETO', 'Objeto social:', 'Objetos']
obj = re.compile(r'\b(?:{})\b\s*(.*?),'.format('|'.join(map(re.escape, keywords))))
print obj.findall(m)
我想在关键字的一个单词和下一点之间打印文本。在这些情况下我想要的输出:“esta es una de, las palabras。”
【问题讨论】:
-
由于您的关键字是多词条目的列表,甚至是空格分隔的,并且它们重叠,您应该考虑通过首先按长度按降序对项目进行排序来构建交替,正如我展示的@ 987654321@。否则,您可能会在结果中看到不需要的文本。
-
哦,完美。这个解决方案比我的要优化得多。谢谢! :)
-
好吧,我仍然不确定单词边界。可能您需要真正丢弃 Jean-Francois 使用的右侧边界。