首頁  >  文章  >  Java  >  Java 正規表示式中的擷取群組如何運作?

Java 正規表示式中的擷取群組如何運作?

Susan Sarandon
Susan Sarandon原創
2024-10-28 22:25:30568瀏覽

How do Capturing Groups Work in Java Regular Expressions?

了解Java 正規表示式擷取群組

在此程式碼片段中,我們使用Java 的正規表示式(regex) 函式庫來擷取字串的一部分。正規表示式定義為“(.)(d )(.)”,其中:

  • (.*):符合下一組之前的任意數量的任意字符。
  • (d ):符合上一組之後的任意數量的數字。
  • (.*):符合上一組之後的任意數量的任何字元。

正規表示式執行

當字串「This order was located for QT3000! OK?」執行正規表示式時,它會產生以下結果:

Found value: This order was placed for QT3000! OK?
Found value: This order was placed for QT
Found value: 3000

理解貪婪量詞

正則表達式中使用的預設量詞是貪婪的,這意味著它匹配盡可能多的字符以滿足下一組。在這種情況下,“.*”匹配整個字串,直到找到第一個數字,不為第三組留下任何字元。

使用勉強量詞

來匹配只有必要的字符,我們可以使用勉強的量詞,用問號表示。將“(.)”替換為“(.?)”匹配盡可能少的字符,從而產生以下輸出:

Found value: This order was placed for QT3000! OK?
Found value: This order was placed for QT
Found value: 3000

捕獲組的優點

捕獲組允許我們提取匹配字串的特定部分以供進一步使用。在這個例子中,我們可以透過「Matcher」物件的「group()」方法存取每個群組的匹配值,如下面的程式碼片段所示:

<code class="java">Pattern pattern = Pattern.compile("(.*?)(\d+)(.*)");
Matcher matcher = pattern.matcher(line);
if (matcher.find()) {
    System.out.println("group 1: " + matcher.group(1));
    System.out.println("group 2: " + matcher.group(2));
    System.out.println("group 3: " + matcher.group(3));
}</code>

以上是Java 正規表示式中的擷取群組如何運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn