我有一个类似的字符串:
[[[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.Value
与er.Groups[0].Value
相同,并且包含一个与整个正则表达式模式匹配的字符串。每个后续元素从索引向上向上表示一个捕获的组。
请参阅MSDN以获取参考。
尝试以下:
[^p{Ps}p{Pe}]
这使用Unicode开口和关闭括号。
为什么不此模式(为您的示例提供正确的输出)?
[a-z]