//零宽度正预测先行断言
//String s = "b(cd|de)(.*)";
String s = "b(?=cd|de)(.*)";
Match m = Regex.Match("eabcdfg", s);
MessageBox.Show(m.Value);
MessageBox.Show(m.Groups[1].Value);//区别 cd cdfg
这种写法和注释掉的写法是有区别的,区别就是“零宽度”,这种写法会被捕获,也就是不占一个Group。
(?!子表达式) 零宽度负预测先行断言。
!表示非,就是不包含,同样是零宽度,不会被捕获。
(?<=子表达式) 零宽度正回顾后发断言。
例:(?<=19)\d{2}\b
“1851 1999 1950 1905 2003”中的“99”、“50”和“05”
(?<!子表达式) 零宽度负回顾后发断言。
例:(?<!19)\d{2}\b
“1851 1999 1950 1905 2003”中的“51”和“03”
您可能感兴趣的文章: