了解 Java 正则表达式捕获组
在此代码片段中,我们使用 Java 的正则表达式 (regex) 库来提取字符串的一部分。正则表达式定义为“(.)(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中文网其他相关文章!