如何使用正则表达式在以模式结尾的句子中查找单词
我有一个句子要匹配的模式列表 例如 my_list = ['one','this']
句子='有人这样做,有人这样做'
结果应仅返回以my_list中的项目结尾的单词
['Someone','dothis']仅
因为我不想匹配某人或这是
答案 0 :(得分:0)
您可以使用以下模式:
\b(\w+(one|this))\b
它表示在单词边界(\b...\b
)中匹配整个单词,并且在整个单词中匹配任何单词字符(\w+
),后跟文字one
或this
( (one|this)
)
答案 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)