Python正则表达式多重搜索

Han*_*pan 5 python regex

我需要在字符串中搜索多个单词.

import re

words = [{'word':'test1', 'case':False}, {'word':'test2', 'case':False}]

status = "test1 test2"

for w in words:
    if w['case']:
        r = re.compile("\s#?%s" % w['word'], re.IGNORECASE|re.MULTILINE)
    else:
        r = re.compile("\s#?%s" % w['word'], re.MULTILINE)
    if r.search(status):
        print "Found word %s" % w['word']
Run Code Online (Sandbox Code Playgroud)

出于某种原因,这只会找到"test2"而从不"test1".为什么是这样?

我知道我可以使用| 划分搜索,但可能有数百个单词,这就是我使用for循环的原因.

Mar*_*ers 7

没有空间之前test1status,而你生成的正则表达式需要那里是一个空间.

您可以修改测试以匹配空格后或行的开头:

for w in words:
    if w['case']:
        r = re.compile("(^|\s)#?%s" % w['word'], re.IGNORECASE|re.MULTILINE)
    else:
        r = re.compile("(^|\s)#?%s" % w['word'], re.MULTILINE)
    if r.search(status):
        print "Found word %s" % w['word']
Run Code Online (Sandbox Code Playgroud)