这是我的正则表达式,我试图检索3个捕获组
res = re.match("^(?![()]*)([()])(.*)$", input)
这是我的预期结果
input = "This is a ()demo)"
I would need 3 capture groups
res.group(1) -> "This is a "
res.group(2) -> "("
res.group(3) -> ")demo)"
input = "Another demo )(continues...()"
res.group(1) -> "Another demo "
res.group(2) -> ")"
res.group(3) -> "(continues...()"
input = "(last demo () and finally"
res.group(1) -> ""
res.group(2) -> "("
res.group(3) -> "last demo () and finally"
但我写的正则表达式与上面给出的3个输入中的任何一个都不匹配。我在这里做错了什么?
答案 0 :(得分:2)
你做错的第一件事是使用否定的先行断言
(?![()]*)
我猜你试图说"匹配任何字符除了 ()
"。您可以通过使用^
符号启动组来使用常规匹配组执行此操作。
([^()]*)
否则,你的正则表达式非常正确。
这是一个正则表达式,它将为您提供预期的输出
^([^()]*)([()])(.*)$