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

 mobiledu2502874377 发布于 2022-11-08 04:09

原标题:问一个正则表达式相关的问题. "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的博客,文章地址: 正则表达式-问号的四种用法

1 个回答
  • 非贪婪匹配,+ 后面跟一个 ? 即可

    "pageUrl":"([\S]+?)","name
    
    2022-11-12 01:39 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有