使用正则表达式,我希望所有字符都放在圆括号之间,但是结果中还应该包含\(
和\)
字符。
示例:
input: fo(ob)a)r
output: ob
input: foo(bar\(qwerty\))baz
output: bar\(qwerty\)
这是我用来在方括号之间查找文本的方法:
(?<=\()([^\s\(\)]+)(?=\))
,但对于\
之前的方括号,我不能例外。
答案 0 :(得分:2)
您可以执行以下操作:
.*(?<!\\)\((.*?)(?<!\\)\)
基本上,它会匹配尽可能多的字符,直到看到没有反斜杠的开放括号(使用负向后缀),然后将下一个匹配的字符分组,直到右括号(仍然没有反斜杠)。
请注意,如果您转义了反斜杠,则此正则表达式可能无法正常工作。
答案 1 :(得分:0)
此正则表达式适用于您的两个示例,无需任何先行和后顾之忧:
\((.+[^\\])\)
需要U
标志。