java - 正则表达式中,得到的结果长度大于预期的结果长度.即:非贪婪匹配
巴扎黑
巴扎黑 2017-04-17 11:08:53
0
1
302

原标题:问一个正则表达式相关的问题. "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
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!