我想与以下案文相匹配:
(valuex) AnySingleWord (valuey)我想在括号中捕捉valuex,valuex的文本。最困难的是valuex,valuey都可以包含括号。例如
((value1) AnySingleWord (value2)) AnySingleWord ((value3) AnySingleWord (value4))那么我的valuex应该是
(value1) AnySingleWord (value2) valuey应该是
(value3) AnySingleWord (value4)regex可以做一些事情,比如计算已通过的开括号数,并匹配直到找到正确的近括号吗?非常感谢。
PS:我可以将开/闭括号对的数目限制在2-3以内,如果这足够小,可以由Regex解决。
发布于 2013-06-20 18:30:27
是的,您可以使用以下模式:
\(((?>\((?<DEPTH>)|\)(?<-DEPTH>)|[^()]+)*(?(DEPTH)(?!)))\)这里有更多关于这种模式的信息:
http://blogs.msdn.com/b/bclteam/archive/2005/03/15/396452.aspx
发布于 2013-06-20 18:24:24
如果我正确地理解了您,那么一个非常简单的方法如下:
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发布于 2013-06-20 18:31:14
你的判断力
(?<left>\(([^()]*(\([^()]*\))?[^()]*)+\))[^()]*(?<right>\([^()]*((\([^()]*\))?[^()]*)+\))你的代码是
Match m=Regex.Match(inp,reg);
m.Groups["left"].Value;//left value
m.Groups["right"].Value;//rightvaluehttps://stackoverflow.com/questions/17220816
复制相似问题