python正则表达式与之间的单词匹配作为可选 - python

我有不同的正则表达式模式,其中包含很多可选部件,但是它不起作用:

import re

s = 'not something useful at all'

p=re.compile(r'not (?:so)? (useful|good|correct)')

if p.search(s) != None:
    print(p.search(s).group(0))
else:
    print("no match")

因此,如果我执行此操作,则会打印“ no match”,但如果将“ something”更改为“ so”,那么我将打印“不是那么有用”,那么“ so”部分是可选的,如果不存在,则为“ not” ”和“有用”仍应匹配

我需要的另一个模式匹配是:

import re

s = 'not random_text_inbetween useful random_text_inbetween at random_text_inbetween all'

p=re.compile(r'(not|maybe) (?:so)? (useful|good|correct) (?:at)? (?:all)?')

if p.search(s) != None:
    print(p.search(s).group(0))
else:
    print("no match")

编辑:好的,所以我将在这里改写第二部分的问题:

wiktor提供了此正则表达式(not|maybe)(?:(?: so)?.*?)? (useful|good|correct)(?: at(?: all)?)?

这表示此regex 101网站上具有以下匹配项:

Match 1
Full match  0-32    `not random_text_inbetween useful`
Group 1.    0-3 `not`
Group 2.    26-32   `useful`

但是我还需要匹配项/组,以防字符串中也包含一个或多个可选部分:

“不是random_text_inbetween有用的random_text_inbetween在
全部之间存在random_text_inbetween

所以在此示例中,我希望为“ at”,“ all”有一个分组,因为它们出现在上面的文本中。

如果未找到可选部分,则不应仅返回这些组,而仅返回诸如“ not”,“ useful”之类的必需词的其余匹配项

参考方案

好吧,我现在想通了:-)

使用此正则表达式:

(not) (?:[^|]+) (useful) (?:[^|]+) (at)? (?:[^|]+) (all)?

我能够捕捉到我想要的东西。感谢wiktor为我提供的帮助,并提供了此regex在线网站,这对快速测试您的regex模式确实很有帮助。

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

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

Python GPU资源利用 - python

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

Python sqlite3数据库已锁定 - python

我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…

Python exchangelib在子文件夹中读取邮件 - python

我想从Outlook邮箱的子文件夹中读取邮件。Inbox ├──myfolder 我可以使用account.inbox.all()阅读收件箱,但我想阅读myfolder中的邮件我尝试了此页面folder部分中的内容,但无法正确完成https://pypi.python.org/pypi/exchangelib/ 参考方案 您需要首先掌握Folder的myfo…

python-docx应该在空单元格已满时返回空单元格 - python

我试图遍历文档中的所有表并从中提取文本。作为中间步骤,我只是尝试将文本打印到控制台。我在类似的帖子中已经看过scanny提供的其他代码,但是由于某种原因,它并没有提供我正在解析的文档的预期输出可以在https://www.ontario.ca/laws/regulation/140300中找到该文档from docx import Document from…