一个 Java 正则表达式例子

java

今天在项目里看到用 Python 正则表达式的时候,用到 group,没有仔细看。正好学习 Java 正则表达式,对 group 多留意了一下。

上代码:

import java.util.regex.*;

class RegexExample2{

public static void main(String[] args) {

String content = " /udisk/123 /udisk/1 /udisk/2";

String pattern = "\\s(/udisk/[1-9]*)";

Pattern r = Pattern.compile(pattern);

Matcher m = r.matcher(content);

while(m.find()) {

System.out.println("Find subString group(0): " + m.group(0));

System.out.println("Find subString group(1): " + m.group(1));

System.out.println("=======================");

}

}

}

打印:

Find subString group(0):  /udisk/123

Find subString group(1): /udisk/123

=======================

Find subString group(0): /udisk/1

Find subString group(1): /udisk/1

=======================

Find subString group(0): /udisk/2

Find subString group(1): /udisk/2

=======================

这里有两个 group: “空格/udisk/*” 和 “/udisk/*”。确定两个,是因为我先调用了 groupCount() 来打印有 group 的个数。

所以,很明显 group(0) 是整个表达式,而 group(1) 就是我们用括号括起来的部分。

某文档写道,捕获组是通过从左至右计算其开括号来编号。例如,在表达式((A)(B(C))),有四个这样的组:

  • ((A)(B(C)))
  • (A)
  • (B(C))
  • (C)

所以, group 是正则表达式中捕获组的意思,并不是匹配了多少次。匹配多次,需要继续调用 match.find() 从上一次的位置继续匹配。

以上是 一个 Java 正则表达式例子 的全部内容, 来源链接: utcz.com/z/393464.html

回到顶部