在没有空格的字符串中查找单词

时间:2013-11-15 14:03:24

标签: python regex

我有一个没有空格的字符串。例如system-gnome-theme-60.0.2-1.el6。 我必须检查其他100个这样的字符串(没有空格),这些字符串有一些先前指定的单词;例如gnomesamba

我如何在python中完成?

samba附加的字符串中可以有任何前缀或后缀。我必须检测它们,我该怎么办?

目前我已经这样做了:

for x in array_actual:
    for y in array_config:
        print x.startswith(y)
        print ans

这是完全错误的,因为它只检查字符串的第一个单词。这个词可以在任何文本之间的任何地方。

1 个答案:

答案 0 :(得分:2)

不使用str.startswith(),而是使用in运算符:

if y in x:

或使用|管道运算符的正则表达式:

all_words = re.compile('|'.join([re.escape(line.split(None, 1)[0]) for line in array_config]))

for x in array_actual:
    if all_words.search(x):

'|'.join([...])列表推导首先会转义每个单词(确保元字符按字面匹配,并且不会被解释为正则表达式模式)。对于列表['gnome', 'samba'],这将创建模式:

gnome|samba

匹配任何包含任何单词的字符串。