我有以下代码:
string rex = "a*";
string txt = "cvb";
Regex regex = new Regex(rex);
Console.WriteLine("Success:" + regex.IsMatch(txt));
Run Code Online (Sandbox Code Playgroud)
此代码始终返回true.我认为a*模式只能匹配:"","a","aa","aaa ....".
我在这里测试了这种情况.
而同样的例子并不匹配.
Bli*_*ndy 12
那只是情况而已^a*$.由于您没有使用开始和结束锚点,因此它将始终与任何字符串中的"无"匹配.
如果你仔细看看RegexPlanet结果,你会发现,虽然matches()方法失败,都find()和lookingAt()返回true. matches()隐含地在两端锚定匹配,就像你写的那样^a*$. lookingAt()仅在开头自动锚定匹配,而find()根本不锚定它.
当然,这些都是Java方法,它们是RegexPlanet使用的正则表达式..NET的IsMatch()方法等同于Java find(),它没有等价的(matches()或者lookingAt()不需要它们).如果你希望匹配锚定,你必须自己锚定它.