用于搜索内部模式的 C# RegEx
C# RegExp for search inner pattern
我有这样的字符串:
[[[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
相同,它包含一个匹配整个正则表达式模式的字符串。每个后续元素,从索引 1 向上,代表一个捕获的组。
参考MSDN。
为什么不是这个模式(它为您的示例提供了正确的输出)?
[a-z]
试试这个:
[^\p{Ps}\p{Pe}]
这使用 unicode 左括号和右括号。
我有这样的字符串:
[[[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
相同,它包含一个匹配整个正则表达式模式的字符串。每个后续元素,从索引 1 向上,代表一个捕获的组。
参考MSDN。
为什么不是这个模式(它为您的示例提供了正确的输出)?
[a-z]
试试这个:
[^\p{Ps}\p{Pe}]
这使用 unicode 左括号和右括号。