首页 > 开发 > JAVA > 正文

正则表达式中,得到的结果长度大于预期的结果长度.即:非贪婪匹配

2017-09-07 09:24:31  来源:网友分享

原标题:问一个正则表达式相关的问题."pageUrl":"([\S]+)","name用上面的匹配如下:得到的是"pageUrl":"test1","name":"test1","pageUrl":"test2

但我想得到的是test1怎么能让它碰到第一个","name就停止呢?

----------------------------------分割线----------------------------------上面的是问题的原样,得到答案后,梳理一下文字,以尽可能的更容易被不知道的搜索到.

贪婪匹配:在满足匹配条件时,匹配尽可能长的字符串,在匹配中,默认为贪婪匹配.

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"

以上内容来自:@zdd的博客,文章地址:正则表达式-问号的四种用法

解决方案

非贪婪匹配,+ 后面跟一个 ? 即可

"pageUrl":"([\S]+?)","name