如何修改此正则表达式模式,以便一旦找到匹配项,就返回整个句子,而不仅仅是匹配的单词? - python

正如标题所说明的,此正则表达式模式基本上检查描述变量是否与集合中的单词组合相匹配,例如:

set = ["oak", "wood"]

那么如果它在5个单词的间隔内找到了这2个单词,它将返回这些单词。但是,我需要它来返回匹配的句子。因此,例如,描述为:

description = "...would be a lovely addition to any home. This lovely oak hard wood table comes in a variety of sizes. Another great reason to consider..." 

而不是仅仅返回匹配的单词,我希望它返回包含关键字的整个句子。

这就是我目前正在使用的方法,显然它只是返回匹配的集合对。

re.findall(r"\b(?:(%s)\W+(?:\w+\W+){0,5}?(%s)|(%s)\W+(?:\w+\W+){0,5}?(%s))\b" % (set[0], set[1], set[1], set[0]), description)

我也知道,我相信这种模式将不仅仅局限于单个句子来进行匹配,因此,您可能会发现它在2个不同的句子中找到了匹配项。如果可能的话,我也想找到一种方法,将匹配限制在同一句子内。

我将不胜感激。

编辑:只是为了澄清我想要的输出是:

"This lovely oak hard wood table comes in a variety of sizes."

因为这是包含匹配关键字对的句子。

谢谢!

参考方案

根据我的评论,一些使用nltk的伪代码(目前无法访问Python):

from nltk import sent_tokenize

for sent in sent_tokenize(your_data_here):
    if any(['foo', 'bar']) in sent:
        # do sth. useful here

显然,您甚至可以将初始正则表达式应用于sent(毕竟是字符串)。

用大写字母拆分字符串,但忽略AAA Python Regex - python

我的正则表达式:vendor = "MyNameIsJoe. I'mWorkerInAAAinc." ven = re.split(r'(?<=[a-z])[A-Z]|[A-Z](?=[a-z])', vendor) 以大写字母分割字符串,例如:'我的名字是乔。 I'mWorkerInAAAinc”变成…

Python uuid4,如何限制唯一字符的长度 - python

在Python中,我正在使用uuid4()方法创建唯一的字符集。但是我找不到将其限制为10或8个字符的方法。有什么办法吗?uuid4()ffc69c1b-9d87-4c19-8dac-c09ca857e3fc谢谢。 参考方案 尝试:x = uuid4() str(x)[:8] 输出:"ffc69c1b" Is there a way to…

Python GPU资源利用 - python

我有一个Python脚本在某些深度学习模型上运行推理。有什么办法可以找出GPU资源的利用率水平?例如,使用着色器,float16乘法器等。我似乎在网上找不到太多有关这些GPU资源的文档。谢谢! 参考方案 您可以尝试在像Renderdoc这样的GPU分析器中运行pyxthon应用程序。它将分析您的跑步情况。您将能够获得有关已使用资源,已用缓冲区,不同渲染状态上…

Python-如何检查Redis服务器是否可用 - python

我正在开发用于访问Redis Server的Python服务(类)。我想知道如何检查Redis Server是否正在运行。而且如果某种原因我无法连接到它。这是我的代码的一部分import redis rs = redis.Redis("localhost") print rs 它打印以下内容<redis.client.Redis o…

Python:图像处理可产生皱纹纸效果 - python

也许很难描述我的问题。我正在寻找Python中的算法,以在带有某些文本的白色图像上创建皱纹纸效果。我的第一个尝试是在带有文字的图像上添加一些真实的皱纹纸图像(具有透明度)。看起来不错,但副作用是文本没有真正起皱。所以我正在寻找更好的解决方案,有什么想法吗?谢谢 参考方案 除了使用透明性之外,假设您有两张相同尺寸的图像,一张在皱纹纸上明亮,一张在白色背景上有深…