匹配由空格分隔的精确字符串python

时间:2018-03-03 12:38:24

标签: python python-3.x python-2.7

实施例

strings_to_search = ['abc', 'def', 'fgh hello']

complete_list = ['abc abc dsss abc', 'defgj', 'abc fgh hello xabd', 'fgh helloijj']

for col_key in strings_to_search:
    print(list(map(lambda x: re.findall(col_key, x), complete_list)))

我们通过运行上面的程序获得低于输出,我能够匹配abc 4次,因为它在第0个索引中匹配3次,在complete_list的第2个索引中匹配1次。

' DEF'正在匹配' defgj',但我想只有在有一个类似' def abc'的字符串时才匹配。或者' def'。 (用空格分隔或匹配字符串的开头和结尾)

同样地,' fgh你好'匹配' abc fgh你好xabd'和' fgh helloijj'。我希望这只能匹配' abc fgh你好xabd'因为它与白色空间分开。任何人都可以建议我如何在python中实现这一目标?

[['abc', 'abc', 'abc'], [], ['abc'], []]

[[], ['def'], [], []]

[[], [], ['fgh hello'], ['fgh hello']]

1 个答案:

答案 0 :(得分:2)

在正则表达式中使用分词符(\ b)。

import re
strings_to_search = ['abc', 'def', 'fgh hello']
complete_list = ['abc abc dsss abc', 'defgj', 'abc fgh hello xabd', 'fgh helloijj']

for col_key in strings_to_search:
    word = r'\b{}\b'.format(col_key)
    print(list(map(lambda x: re.findall(word, x), complete_list)))

输出:

[['abc', 'abc', 'abc'], [], ['abc'], []]
[[], [], [], []]
[[], [], ['fgh hello'], []]