C#REGEXP用于搜索内部模式



我有一个类似的字符串:

[[[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]]]

怎么了?你能帮我吗?

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

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

请参阅MSDN以获取参考。

尝试以下:

[^p{Ps}p{Pe}]

这使用Unicode开口和关闭括号。

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

[a-z]

最新更新