C# 正则表达式捕获括号内的值,值也包含括号

C# 正则表达式捕获括号内的值,值也包含括号,c#,regex,pattern-matching,brackets,curly-braces,C#,Regex,Pattern Matching,Brackets,Curly Braces,我想匹配以下文本: (valuex) AnySingleWord (valuey) 我想捕获括号内valuex,valuey的文本。最困难的是valuex,valuey也可以包含括号。比如说 ((value1) AnySingleWord (value2)) AnySingleWord ((value3) AnySingleWord (value4)) 那么我的valuex应该是 (value1) AnySingleWord (value2) (value3) AnySingleWord

我想匹配以下文本:

(valuex) AnySingleWord (valuey)
我想捕获括号内valuex,valuey的文本。最困难的是valuex,valuey也可以包含括号。比如说

((value1) AnySingleWord (value2)) AnySingleWord ((value3) AnySingleWord (value4))
那么我的valuex应该是

(value1) AnySingleWord (value2) 
(value3) AnySingleWord (value4)
瓦利应该是

(value1) AnySingleWord (value2) 
(value3) AnySingleWord (value4)
正则表达式是否可以做一些事情,比如计算已通过的开放括号的数量,并进行匹配,直到找到正确的封闭括号?非常感谢


PS:我可以将开/闭括号对的数量限制为2-3,如果这足够小,可以通过正则表达式解决,如果我理解正确,一个非常简单的方法如下:

1. iterate through characters
2. find first left brace
3. count braces until non-paired right brace appears and store index
4. take the substring from zero to that index and set as value x
5. delete value x substring
6. go to step 1 and store next part as value y

如果我理解正确,一个非常简单的方法如下:

1. iterate through characters
2. find first left brace
3. count braces until non-paired right brace appears and store index
4. take the substring from zero to that index and set as value x
5. delete value x substring
6. go to step 1 and store next part as value y

是的,您可以使用此模式:

\(((?>\((?<DEPTH>)|\)(?<-DEPTH>)|[^()]+)*(?(DEPTH)(?!)))\)
有关这种模式的更多信息,请参见:


是的,您可以使用此模式:

\(((?>\((?<DEPTH>)|\)(?<-DEPTH>)|[^()]+)*(?(DEPTH)(?!)))\)
有关这种模式的更多信息,请参见:

你的正则表达式是

(?<left>\(([^()]*(\([^()]*\))?[^()]*)+\))[^()]*(?<right>\([^()]*((\([^()]*\))?[^()]*)+\))
你的正则表达式是

(?<left>\(([^()]*(\([^()]*\))?[^()]*)+\))[^()]*(?<right>\([^()]*((\([^()]*\))?[^()]*)+\))

相关:。是否有最大数量的嵌套括号?如果是这样,那么可以使用正则表达式。然而,这可能不是最简单的解决方案。@Jerry:你仍然可以递归地得到它。如果开/闭括号对的数量足够小,可以通过RegexHeadline更改请求来解决,我可以将其限制为2-3。“括号”这个词不应该用在['而不是括号?相关:。你有最大数量的嵌套括号吗?如果有,那么你可以使用正则表达式。但是,这可能不是最简单的解决方案。@Jerry:你仍然可以递归地得到它。我可以将开/闭括号对的数量限制为2-3,如果这足够小,可以通过RegexHeadline更改请求来解决。w不应该吗ord“括号”用于['而不是括号?这将是一个直观的非正则表达式解决方案,如果我无法使用正则表达式处理问题,我将尝试此方法!它也将更易于阅读和调试。这是您的选择,但此场景显然适合于非正则表达式解决方案。如果我无法处理问题,这将是一个直观的非正则表达式解决方案使用正则表达式,我会试试这个当然!它也会更容易阅读和调试。这是你们的选择,但这个场景似乎适合非正则表达式解决方案。这很有效,非常感谢。这是我个人的工作,很好,否则队友会杀了我,或者我会沮丧地解释正则表达式平衡匹配组。这项工作s、 非常感谢。虽然这是我个人的工作,但很好,否则队友会杀了我,或者我会沮丧地解释Regex平衡匹配组。谢谢,遗憾的是Casimir的解决方案较短,感谢againThanks的帮助,遗憾的是Casimir的解决方案较短,再次感谢您的帮助