正则表达式匹配括号内的任何内容,支持转义括号:(文本),(\)text \))

时间:2018-04-30 09:37:44

标签: .net regex

我正在尝试提出一个可以验证和解析括号内的正则表达式,支持转义括号

示例:

正确

(text) => 'text'
(1, 2, 3) => '1, 2, 3'
(one\(\\\@) => 'one\(\\\@'  - still ok, all three '(', '\', '@' are escaped
(!"£$%^&*) => '!"£$%^&*' special characters are ok and don't need to be escaped 

不正确

(text - missing closing bracket
(text\) - missing closing bracket
\(text) - missing opening bracket
(text)) - too many closing brackets
((text) - too many opening brackets
(text)text) - too many closing brackets

最好是.Net

声明

我花了相当多的时间和精力试图解决这个问题,其中没有一个有效,我想不要在这里张贴它们以避免误导你。我相信解决这个问题最好从头开始。

E.g。 ^(([^()] *))$匹配括号内的所有内容,但不支持内部的“()”括号。

请帮助 斯蒂芬

1 个答案:

答案 0 :(得分:1)

^(?!\\)\((.*)(?<!\\)\)$

这个正则表达式利用负面前瞻和负面外观来确保最后两个不正确的示例不匹配(即(text\)\(text))。

在此处查看正则表达式的完整细分:https://regex101.com/r/TmON1U/2

enter image description here