通过正则表达式的paren列表?

时间:2012-05-23 13:21:43

标签: .net regex

我需要构造一个正则表达式来分解像这样的字符串 (1 2 3);(a b c);(4 5 6)

即。括号中的每一个东西都是一个blob(或者下一个要拆开的列表)

有什么想法吗?

这是我在此找到的链接。到目前为止,我还没能在.net下工作。如果你能做翻译,那将不胜感激。

http://www.perlmonks.org/?node_id=574517

2 个答案:

答案 0 :(得分:3)

使用string.Split

可以很容易地实现这一点
string[] results = myString.Split("();".ToCharArray(), 
                                  StringSplitOptions.RemoveEmptyEntries);

// results[0] == "1 2 3"
// results[1] == "a b c"
// results[2] == "4 5 6"

答案 1 :(得分:1)

根据我上面的评论:

只是为了挑战,这里是正则表达式:

(?<=(^|;)\()(?<list>[^();]+)(?=\)(;|$))

它将列表的开头定义为字符串的开头或分号后跟一个打开的paren,并且如果它遇到一个紧密的paren,后面跟着一个分号结尾的字符串,则只考虑每个列表。 “list”是包含(您猜对了)每个列表的命名组。