使用Python中的regex.findall完全匹配列表交集

时间:2017-05-04 19:15:43

标签: python regex python-3.x

我想使用正则表达式获得单词列表的交集。它的C实现让它运行得更快在这个特殊情况下非常重要......即使我的代码几乎可以工作,它也会匹配'embeded-words',比如“买家”和“买”这样的例子。

有些代码可能会更好地解释它。这就是我到目前为止所做的:

re.findall(r"(?=(" + '|'.join(['buy', 'sell', 'gilt']) + r"))", ' '.join(['aabuya', 'gilt', 'buyer']))
>> ['buy', 'gilt', 'buy']

虽然这是我想要的:

re.exactfindall(['buy', 'sell', 'gilt'], ['aabuya', 'gilt', 'buyer'])
>>['gilt']

感谢。

2 个答案:

答案 0 :(得分:1)

要使用regexp执行此操作,最简单的方法可能是在匹配表达式中包含单词分隔符(\b),(在catch之外)为您提供:

re.findall(r"\b(?=(" + '|'.join(['buy', 'sell', 'gilt']) + r")\b)",
    ' '.join(['aabuya', 'gilt', 'buyer']))

按要求输出['gilt']

答案 1 :(得分:0)

listgiven=['aabuya', 'gilt', 'buyer']
listtomatch=['buy', 'sell', 'gilt']
exactmatch = [x for x in listgiven if x in listtomatch]
print(exactmatch)