首页  >  文章  >  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