正则表达式引擎将会尽可能的匹配更多的字符。正则表达式引擎遇到一个重复字符时,只要表达式的特定成分允许,他将从左到右开始搜索。例如,/d*3将进行数字匹配,一直到没有更多的数字能够匹配为止。获得了尽可能多的数字后,引擎将试图匹配3。
static
string
partten
=
@"/
d*3
"
;
public static void test()
... {
Regex r=new Regex(partten);
MatchCollection mc = r.Matches("1231234537");
foreach (Match m in mc)
...{
Console.WriteLine(m.Value);
}
}
public static void test()
... {
Regex r=new Regex(partten);
MatchCollection mc = r.Matches("1231234537");
foreach (Match m in mc)
...{
Console.WriteLine(m.Value);
}
}
结果为123123453
照成这个结果的原因就是因为/d*贪婪会尽多的匹配数字的原因,使用?可以改成惰性匹配。
static
string
partten
=
@"/
d*?3
"
;
public static void test()
... {
Regex r=new Regex(partten);
MatchCollection mc = r.Matches("1231234537");
foreach (Match m in mc)
...{
Console.WriteLine(m.Value);
}
}
public static void test()
... {
Regex r=new Regex(partten);
MatchCollection mc = r.Matches("1231234537");
foreach (Match m in mc)
...{
Console.WriteLine(m.Value);
}
}
结果为:
123
123
453