在 " 和 ( 但不在 "" 之前捕获感叹号 (RegEx)

Capture exclamation mark before " and ( but not inside "" (RegEx)

如何在 "( 之前捕获感叹号 !,但不在两个双引号 " 内?

前面的前提是可以的,但是后面的那个感叹号不应该在双引号里面,应该加上:

\s*([\!])\s*(")|\s*([\!])\s*(\() 

给定输入:( ! "A" ! (!"B" "C" " ! ( "))

预期输出:( ! "A" ! ( ! "B" "C" " ! ( "))

http://www.regexr.com/3f495

如果我理解你是对的,那么你想要 一个 space 引号外的感叹号 .

这个正则表达式应该可以完成工作:

\G[^"]*?\K(?:\s*!\s*(?=["(]))([^"!]*(?:"[^"]*")?)

您可以在此处找到对正则表达式的解释:

Debuggex Demo

关于替换,您可以在这里查看: https://regex101.com/r/dzwTUp/1