首页 >Java >java教程 >如何在 Java 7 之前的 Java 中使用命名捕获组?

如何在 Java 7 之前的 Java 中使用命名捕获组?

Barbara Streisand
Barbara Streisand原创
2024-11-05 06:01:01561浏览

How can I use named capture groups in Java before Java 7?

Java 中带有正则表达式的命名组

正则表达式包有限制

java.regex 包我已确认不支持命名组,因此请让我知道哪些第三方库支持它。

我研究了 jregex,但最后一个版本是在 2002 年,它不适用于 java5(尽管我立即尝试了)。

自 Java 7 以来的支持

Java 7 添加了对命名组的支持。支持命名捕获组的构建块是:

  • '(?capturing text)' 定义命名组 'name'
  • ' 反向引用命名组 'name' k'
  • '${name}' 引用 Matcher 的替换字符串中捕获的组
  • 由指定的“命名组”“Matcher.group(String name)”捕获的输入返回子字符串

Java 7 之前的替代方案 有一个替代方案。

Google 命名正则表达式

    jregex
  • Regex2 库

Regex2 库支持命名组它扩展要创建的 java.util.regex.Pattern 类。

示例

输入字符串:"TEST 123"

正则表达式:"(?w ) (? ; d )"

访问:

matcher.group(1) == "TEST"

matcher.group("login") == "TEST"

matcher.name (1) == "登录"


替换:

matcher.replaceAll("aaaaa_$1_sssss_$2____") == "aaaaa_TEST_sssss_123____"

matcher.replaceAll("aaaaa_$ {登录}_sssss_${id}____") == "aaaaa_TEST_sssss_123____"

以上是如何在 Java 7 之前的 Java 中使用命名捕获组?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn