问号可以表示重复前面内容的0次或一次,也就是要么不出现,要么出现一次。
在满足匹配时,匹配尽可能长的字符串,默认情况下,采用贪婪匹配
1 2 3 | string pattern1 = @ "a.*c" ; // greedy match Regex regex = new Regex(pattern1); regex.Match( "abcabc" ); // return "abcabc" |
非贪婪匹配
在满足匹配时,匹配尽可能短的字符串,使用?来表示非贪婪匹配
1 2 3 | string pattern1 = @ "a.*?c" ; // non-greedy match Regex regex = new Regex(pattern1); regex.Match( "abcabc" ); // return "abc" |
几个常用的非贪婪匹配Pattern
*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复
参考 https://www.jb51.net/article/72871.htm