C#RegExp用于搜索内部模式

时间:2015-05-06 08:45:49

标签: c# regex text

我有一个这样的字符串:

[[[a]]][[[b]]][[[c]]]

我想提取这些:

a
b
c

所以我写了以下模式:

@"\[\[\[(.+?)\]\]\]"

使用以下代码

string input = "[[[a]]][[[b]]][[[c]]]";
Regex regexObj = new Regex(@"\[\[\[(.+?)\]\]\]");
foreach (Match er in regexObj.Matches(input)) 
{ 
    MessageBox.Show(er.Value); 
} 

结果是:

[[[a]]]
[[[b]]]
[[[c]]]

怎么回事?你能帮帮我吗?

3 个答案:

答案 0 :(得分:3)

而不是er.Value,您需要使用er.Groups[1].Value

er.Valueer.Groups[0].Value相同,它包含与整个正则表达式模式匹配的字符串。从索引一向上的每个后续元素代表一个捕获的组。

请参阅MSDN以供参考。

答案 1 :(得分:0)

试试这个:

[^\p{Ps}\p{Pe}]

这使用unicode开始和结束括号。

答案 2 :(得分:-1)

为什么不使用此模式(它为您的示例提供了正确的输出)?

[a-z]
相关问题