匹配句子中以模式结尾的单词

时间:2019-07-12 19:08:09

标签: python regex

如何使用正则表达式在以模式结尾的句子中查找单词

我有一个句子要匹配的模式列表 例如 my_list = ['one','this']

句子='有人这样做,有人这样做'

结果应仅返回以my_list中的项目结尾的单词

['Someone','dothis']仅

因为我不想匹配某人或这是

2 个答案:

答案 0 :(得分:0)

您可以使用以下模式:

\b(\w+(one|this))\b

它表示在单词边界(\b...\b)中匹配整个单词,并且在整个单词中匹配任何单词字符(\w+),后跟文字onethis(one|this)

https://regex101.com/r/UzhnSw/1/

答案 1 :(得分:0)

您可以使用单词边界元字符\b结束模式。它将匹配所有非单词字符,包括字符串的结尾。因此,在特定情况下,模式将为(one|this)\b

要在您的my_list变量中实际创建一个正则表达式,假设不存在保留字符,则可以执行以下操作:

import re

def words_end_with(sentence, my_list):
    return re.findall(r"({})\b".format("|".join(my_list)), sentence)

如果您使用的是Python 3.6+,则还可以使用f-string在字符串本身内部进行以下格式化:

import re

def words_end_with(sentence, my_list):
    return re.findall(fr"({'|'.join(my_list)})\b", sentence)

请参见https://www.regular-expressions.info/wordboundaries.html