了解 Java 正则表达式捕获组
在此代码片段中,我们使用 Java 的正则表达式 (regex) 库来提取字符串的一部分。正则表达式定义为“(.)(\d )(.)”,其中:
正则表达式执行
当对字符串“This order was put 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()”方法访问每个组的匹配值,如下面的代码片段所示:
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));
}
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3