是否可以在 java 模式中使用正则表达式全局 g 标志?
我试过 final Pattern pattern = Pattern.compile(regex,Pattern.DOTALL);
但它的行为不像全局标志。
我们在 java 中有任何解决方法吗?
我的正则表达式是:private final String regex ="(public|private|protected|static|final|abstract|synchronized|volatile)\\s*([\\w<>\\[\\]]+)\\s*(\\w+)\\s*\\(([\\w\\s\\w,<>\\[\\]]*)?\\)\\s*(\\bthrows\\b)?[\\s\\w\\s,\\w]*\\{[\\n\\t]*(.+)[\\n\\t]*((return|throw){1}\\s*)(\\w*)\\s*;\\s*[\\}]";
输入是文件内容,类似于下面正则表达式链接中提到的内容:
https://regex101.com/r/u7vanR/3
我想要 java 模式找到这两个出现,但是使用 java 正则表达式标志它只是找到第一个而不是两个。
最佳答案
Java 没有全局标志。您可以通过 find
获取所有匹配项和 group
.
Pattern pattern = Pattern.compile("1");
Matcher matcher = pattern.matcher("111");
while (matcher.find()) {
System.out.println(matcher.group());
}
输出是
1
1
1
关于java - 在java中使用regex g标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51687766/