gpt4 book ai didi

python - 正则表达式 - 为什么这个正则表达式在 Python 中不起作用?

转载 作者:太空宇宙 更新时间:2023-11-03 16:18:35 25 4
gpt4 key购买 nike

我有这个表情

:([^"]*) \(([^"]*)\)

和这段文字

:chkpf_uid ("{4astr-hn389-918ks}")

:"#cert" ("false")

我正在尝试匹配它,以便在第一句话中得到这些组:

  1. chkpf_uid
  2. {4astr-hn389-918ks}

第二个,我会得到这些:

  1. #cert

我想避免得到报价。

我似乎无法理解为什么我使用的表达式与这些不匹配,特别是如果我将 [^"]* 切换为 (.*).

([^"]*):wont match

与 (.*): does match, but with quotes

这是使用Python 2.7中的re模块

最佳答案

旁注:您的输入可能需要特定的解析器来处理,特别是如果它可能具有转义序列。

回答问题本身,请记住正则表达式是从左到右顺序处理的,并且这里的字符串处理方式相同。如果模式与部分/整个字符串匹配(取决于所使用的方法),则返回匹配项。

如果字符串中有引号,并且您的模式不允许匹配这些引号,则匹配将失败,不会返回任何匹配项。

可能的解决方案是将引号添加为可选子模式:

:"?([^"]*)"? \("?([^"]*)"?\)
^^ ^^ ^^ ^^

请参阅regex demo

您需要的部分被捕获到组中,并且引号(无论是否存在)都会匹配,超出您的 re.findall 范围。

关于python - 正则表达式 - 为什么这个正则表达式在 Python 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38696855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com