我有这个表达
:([^"]*) \(([^"]*)\)
和本文
:chkpf_uid ("{4astr-hn389-918ks}")
:"#cert" ("false")
我试图匹配它,以便在第一句话中生病得到这些群体:
而在第二天,生病得到这些:
#cert
我想避免收到报价。
我似乎无法理解为什么我使用的表达式与这些表达式不匹配,特别是如果我将[^"]*
切换为(.*)
。
([^"]*)
:wont match
with(。*):does match, but with quotes
这是在python 2.7中使用re
模块
答案 0 :(得分:1)
旁注:您的输入可能需要特定的解析器来处理,特别是如果它可能有转义序列。
回答问题本身,请记住正则表达式从左到右依次处理顺序,并且字符串在这里处理相同。如果模式匹配部分/整个字符串(取决于使用的方法),则返回匹配。
如果字符串中有引号,并且您的模式不匹配这些引号,则匹配将失败,不会返回匹配。
可能的解决方案是将引号添加为otpional子模式:
:"?([^"]*)"? \("?([^"]*)"?\)
^^ ^^ ^^ ^^
请参阅regex demo
您需要的部分会被捕获到群组中,报价(无论是否存在)只是匹配,不在re.findall
范围之内。