Python 在句子中匹配以句型结尾的单词

Python 在句子中匹配以句型结尾的单词,python,regex,Python,Regex,如何使用正则表达式在以句型结尾的句子中查找单词 我有一个句子中要匹配的模式列表 例如 我的清单=['1','this'] 句子=‘有人做了这件事’有人做了这件事 结果应该只返回以my_列表中的项目结尾的单词 只有“某人”,“做这件事” 因为我不想匹配某个或这是,所以可以使用以下模式: \b(\w+(one|this))\b 它表示在单词边界内匹配整词(\b..\b),在整词内匹配任何单词字符(\w+),后跟文字one或this((one | this)) 您可以使用单词边界元字符\b结束模式。

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

我有一个句子中要匹配的模式列表 例如 我的清单=['1','this']

句子=‘有人做了这件事’有人做了这件事

结果应该只返回以my_列表中的项目结尾的单词

只有“某人”,“做这件事”


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

,所以可以使用以下模式:

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


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

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

重新导入
def单词以(句子,我的列表)结尾:
返回re.findall(r)({})\b.format(“|”。.join(my_list)),句子)
如果您使用的是Python 3.6+,还可以使用,在字符串本身内部进行格式化:

重新导入
def单词以(句子,我的列表)结尾:
return re.findall(fr“({'|'.join(my_list)})\b”,句子)

请参见结尾处的
$
锚定。这里有一个很好的解释:。简单示例:
asdf$
将匹配以
asdf
结尾的字符串。