大家可以看一下这段字符串 "[#产品_0.产品ID:2#][#产品_0.单价:3#][#求和:4#]"Regex re = new Regex(this.regStr); MatchCollection match = re.Matches(temp);理论上应该返回3段,但每次返回的集合长度都是0,头疼死了。
string yourStr = @"[#产品_0.产品ID:2#][#产品_0.单价:3#][#求和:4#]"; string regexStr = @"\[\#([^\:]+)\:([^\#]+)\#\]"; MatchCollection mc = Regex.Matches(yourStr, regexStr); foreach(Match m in mc) { string s1 = m.Groups[0].Value; string s2 = m.Groups[1].Value;
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
^\[\#.+:\d\d*\#\]$
"[#产品_0.产品ID:2#][#产品_0.单价:3#][#求和:4#]"Regex re = new Regex(this.regStr);
MatchCollection match = re.Matches(temp);理论上应该返回3段,但每次返回的集合长度都是0,头疼死了。
string regexStr = @"\[\#([^\:]+)\:([^\#]+)\#\]";
MatchCollection mc = Regex.Matches(yourStr, regexStr);
foreach(Match m in mc)
{
string s1 = m.Groups[0].Value;
string s2 = m.Groups[1].Value;
Console.WriteLine("{0} : {1}", s1, s2);
}
使用\[\#[^:]+\:[\d]+\#\]
使用The Regulator得到三个结果。
可以试试。
我已经得到了3个结果
但是要对他们单独进行替换
例如: 将[#产品_0.产品ID:2#]替换成[#产品[email protected]#]
如何实现呢?
string regexStr = @"\[\#([^\:]+)\:([^\#]+)\#\]";
MatchCollection mc = Regex.Matches(yourStr, regexStr);
foreach(Match m in mc)
{
string s1 = m.Groups[0].Value;
string s2 = m.Groups[1].Value;
Console.WriteLine("{0} : {1}", s1, s2);
}
注意mobydick的这个正则表达式并不完全正确,对于
@"[#产品_0.产品ID:2#][#产品_0.单价:3#][#求和:4#]";
的确匹配,
但对于
@"[#产品_0.产品ID:aaa#][#产品_0.单价:ccc#][#求和:ddd#]";
它也匹配,也就是说,那是充分条件而非必要条件。