【发布时间】:2019-07-20 13:10:23
【问题描述】:
我有一个列表l = [AA, CC, DD, EE]
我有很多来自文件的字符串,我想在其中找到包含列表中任何确切单词的字符串。我不想得到在特定字符串中匹配的单词。阅读其他 SO 问题,我得到的建议主要通过以下两种方式将列表组合成一个正则表达式
1. \bAA\b|\bCC\b|\bDD\b|\bEE\b ==> r"\b%s\b" % r"\b|\b".join(l)
2. \b(?:AA|CC|DD|EE)\b ==> r"\b(?:%s)\b" % "|".join(l)
上面右边提到的连接只是一个例子,不是问题的一部分。
运行代码,它们都给出了相同的正确答案,并且 timit 给出了相似的时间。
如果我不关心列表中匹配的单词,是否需要像选项 2 中那样进行分组?为什么选项#2 末尾的单词边界?这是否意味着它适用于括号内的所有单词,即相当于(?:\bAA\b|\bCC\b|\bDD\b|\bEE\b)?谁能指出一个提到这个括号属性的链接?
这两个选项中的任何一个更正确/pythonic?
【问题讨论】:
标签: regex python-3.x regex-group