我有一个这样的字符串:
[[[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]]]
怎么回事?你能帮帮我吗?
答案 0 :(得分:3)
而不是er.Value
,您需要使用er.Groups[1].Value
。
er.Value
与er.Groups[0].Value
相同,它包含与整个正则表达式模式匹配的字符串。从索引一向上的每个后续元素代表一个捕获的组。
请参阅MSDN以供参考。
答案 1 :(得分:0)
试试这个:
[^\p{Ps}\p{Pe}]
这使用unicode开始和结束括号。
答案 2 :(得分:-1)
为什么不使用此模式(它为您的示例提供了正确的输出)?
[a-z]