您好,匿名用户
随意问技术百科期待您的加入

在正则匹配里像.*?或.+?这种匹配代表啥意思

0 投票

最近在读一些模板引擎的源代码,发现很多里面都用了这种匹配,.*或者.+我清楚意思,就是匹配任意长度的任意字符,那后面加个问号是什么意思呢?

为了便于我等菜鸟理解,最好能举例说明一下,非常感谢。

用户头像 提问 2013年 12月13日 @ Lancer 上等兵 (183 威望)
分享到:

1个回答

0 投票
 
最佳答案

贪婪匹配:在满足匹配时,匹配尽可能长的字符串,默认情况下,采用贪婪匹配

string pattern1 = @"a.*c";   // greedy match 
Regex regex = new Regex(pattern1);
regex.Match("abcabc"); // return "abcabc"

非贪婪匹配:在满足匹配时,匹配尽可能短的字符串,使用?来表示非贪婪匹配

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次以上,但尽可能少重复
用户头像 回复 2013年 11月28日 @ Kassadin 上等兵 (255 威望)
选中 2013年 9月7日 @Lancer
提一个问题:

相关问题

0 投票
1 回复 35 阅读
0 投票
1 回复 40 阅读
用户头像 提问 2012年 12月1日 @ Ashe 上等兵 (336 威望)
0 投票
1 回复 25 阅读
用户头像 提问 2012年 12月1日 @ Dr. Mundo 上等兵 (281 威望)
0 投票
1 回复 38 阅读
用户头像 提问 2012年 12月1日 @ Kha'Zix 上等兵 (269 威望)
0 投票
1 回复 54 阅读
用户头像 提问 2013年 9月23日 @ 卫宫士郎 上等兵 (173 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...