将字边界语法添加到字符串列表中

时间:2014-02-18 18:14:00

标签: python regex

如果此问题已经存在,请指点我。

如何有效地将字边界语法添加到字符串列表中?

例如,我想确保badpositions中的以下字词仅与整个字词匹配,因此我想使用re.search('\bword\b', text)

如何将不良位置的单词设为['\bPresident\b', '\bProvost\b']

形式
text = ['said Duke University President Richard H. Brodhead. "Our faculty look forward']
badpositions = ['President', 'Provost', 'University President', 'Senior Vice President'] 

1 个答案:

答案 0 :(得分:6)

re_badpositions = [r"\b{word}\b".format(word=word) for word in badpositions]

indexes = {badpositions[i]:re.search(re_badpositions[i],text) for i in range(len(badpositions))}

如果我理解正确,您希望在\bWORD\b字符串中找到与所有单词完全匹配的起始索引(即text)。我就是这样做的,但我肯定会在这里增加一步,你可以轻松做到:

indexes = {word: re.search("\b{word}\b".format(word=word),text) for word in badpositions}

我发现创建一个要搜索的正则表达式列表更加清晰,然后单独搜索它们,而不是同时将这些正则表达式插入到位。尽管如此,这完全取决于个人偏好。