- Java 正则表达式教程
- Java 正则表达式 - 主页
- Java 正则表达式 - 概述
- Java Regex - 捕获组
- Java 正则表达式 - MatchResult 接口
- Java 正则表达式 - 模式类
- Java 正则表达式 - 匹配器类
- PatternSyntaxException 类
- Java 正则表达式示例
- Java 正则表达式 - 字符
- Java 正则表达式 - 字符类
- 预定义字符类
- POSIX 字符类
- Java 正则表达式 - JAVA 字符类
- Unicode 字符类
- Java 正则表达式 - 边界匹配器
- Java Regex - 贪婪量词
- Java Regex - 不情愿的量词
- Java Regex - 所有格量词
- Java 正则表达式 - 逻辑运算符
- Java 正则表达式 有用的资源
- Java 正则表达式 - 快速指南
- Java 正则表达式 - 有用的资源
- Java 正则表达式 - 讨论
Java Regex - 捕获组
捕获组是将多个字符视为一个单元的一种方法。它们是通过将要分组的字符放在一组括号内来创建的。例如,正则表达式 (dog) 创建一个包含字母“d”、“o”和“g”的组。
捕获组通过从左到右数其左括号来编号。例如,在表达式 ((A)(B(C))) 中,有四个这样的组 -
- ((A)(B(C)))
- (A)
- (公元前))
- (C)
要了解表达式中存在多少个组,请调用匹配器对象的 groupCount 方法。groupCount 方法返回一个int,显示匹配器模式中存在的捕获组的数量。
还有一个特殊的组,组 0,它始终代表整个表达式。该组不包含在 groupCount 报告的总数中。
例子
以下示例说明如何从给定的字母数字字符串中查找数字字符串 -
import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexMatches { public static void main( String args[] ) { // String to be scanned to find the pattern. String line = "This order was placed for QT3000! OK?"; String pattern = "(.*)(\\d+)(.*)"; // Create a Pattern object Pattern r = Pattern.compile(pattern); // Now create matcher object. Matcher m = r.matcher(line); if (m.find( )) { System.out.println("Found value: " + m.group(0) ); System.out.println("Found value: " + m.group(1) ); System.out.println("Found value: " + m.group(2) ); } else { System.out.println("NO MATCH"); } } }
这将产生以下结果 -
输出
Found value: This order was placed for QT3000! OK? Found value: This order was placed for QT300 Found value: 0