RegEx a*匹配所有字符串吗?

Gon*_*tti 3 .net c# regex

我有以下代码:

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*$.由于您没有使用开始和结束锚点,因此它将始终与任何字符串中的"无"匹配.

  • @Spudley,我想*你*错过了什么,OP*想要*也匹配一个空字符串.他只是不知道`IsMatch`会返回部分匹配. (2认同)

Ala*_*ore 6

如果你仔细看看RegexPlanet结果,你会发现,虽然matches()方法失败,都find()lookingAt()返回true. matches()隐含地在两端锚定匹配,就像你写的那样^a*$. lookingAt()仅在开头自动锚定匹配,而find()根本不锚定它.

当然,这些都是Java方法,它们是RegexPlanet使用的正则表达式..NET的IsMatch()方法等同于Java find(),它没有等价的(matches()或者lookingAt()不需要它们).如果你希望匹配锚定,你必须自己锚定它.