亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java Regex捕獲組

Java Regex捕獲組

catspeake 2019-08-12 18:10:07
Java Regex捕獲組我試圖理解這個代碼塊。在第一個中,我們在表達中尋找什么?我的理解是它是任何字符(0次或更多次*)后跟0到9之間的任何數字(一次或多次+)后跟任何字符(0次或更多次*)。執行此操作時,結果為:Found value: This order was placed for QT3000! OK? Found value: This order was placed for QT300 Found value: 0有人可以和我一起討論嗎?使用捕獲組有什么好處?import java.util.regex.Matcher;import java.util.regex.Pattern;public class RegexTut3 {     public static void main(String args[]) {         String line = "This order was placed for QT3000! OK?";          String pattern = "(.*)(\\d+)(.*)";         // Create a Pattern object         Pattern r = Pattern.compile(pattern);         // Now create matcher object.         Matcher m = r.matcher(line);         if (m.find()) {             System.out.println("Found value: " + m.group(0));             System.out.println("Found value: " + m.group(1));             System.out.println("Found value: " + m.group(2));         } else {             System.out.println("NO MATCH");         }     }}
查看完整描述

3 回答

?
呼如林

TA貢獻1798條經驗 獲得超3個贊

這完全沒問題。

  1. 第一個組(m.group(0))始終捕獲正則表達式覆蓋的整個區域。在這種情況下,它是整個字符串。

  2. 默認情況下,正則表達式是貪婪的,這意味著第一組在不違反正則表達式的情況下盡可能地捕獲。在(.*)(\\d+)(你的正則表達式的第一部分)覆蓋...QT300INT第一組和0第二。

  3. 您可以通過使第一組非貪婪來快速解決此問題:更改(.*)(.*?)

有關貪婪與懶惰的更多信息,請查看此站點。


查看完整回答
反對 回復 2019-08-12
  • 3 回答
  • 0 關注
  • 594 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號