首页 > Java > java教程 > Java 正则表达式中的捕获组如何工作?

Java 正则表达式中的捕获组如何工作?

Susan Sarandon
发布: 2024-10-28 22:25:30
原创
692 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板