首頁  >  文章  >  Java  >  如何在 Java 正規表示式中使用命名組?

如何在 Java 正規表示式中使用命名組?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-06 01:27:02130瀏覽

How Can I Utilize Named Groups in Java Regular Expressions?

Java 正規表示式命名群組:深入探索

儘管Java 的java.regex 套件中缺少內建命名群組支持,第三方庫為此限制提供了解決方案。

Java 7 對命名組的支援

從Java 7 開始,已引入命名捕獲組,具體如下構造:

  • ( ?捕獲文字):定義命名組「name」。
  • k:反向引用命名群組「name」。
  • ${name}:引用在匹配器的替換字串中捕獲的文字。
  • Matcher.group(String name):透過命名群組「name」擷取擷取的文字。

Java 7 之前的替代方案

在Java 7 之前,多個庫提供了命名組支援:

  • Google 命名正規表示式 :此函式庫提供了豐富的功能,包括巢狀命名組和遞歸正規表示式模式。
  • jregex:雖然支援有限,但該程式庫仍提供基本的命名組功能。

範例

考慮以下使用命名正規表示式模式的範例:

String input = "TEST 123";
Pattern pattern = Pattern.compile("(?<login>[\w]+) (?<id>[\d]+)");
Matcher matcher = pattern.matcher(input);
System.out.println("Login: " + matcher.group("login"));
System.out.println("ID: " + matcher.group("id"));

這將輸出:

Login: TEST
ID: 123

這將輸出:

限制
  • Java 的命名組支援受到以下方面的限制:
  • 每個名稱只能有一個命名組。 此限制會阻止捕獲相同命名組多次出現。

不支援正規表示式內遞迴。 命名組不能用作正規表示式模式內的遞迴目標。

結論第三方函式庫為 Java 提供了強大的命名群組支援。然而,隨著 Java 7 中命名組的引入,開發人員現在可以採用更簡化和標準化的方法來在正規表示式模式中使用命名組。

以上是如何在 Java 正規表示式中使用命名組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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