是否可以在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*[\\}]";
input是文件内容,类似于下面的regex链接中提到的内容: https://regex101.com/r/u7vanR/3
我希望Java模式能够找到这两种情况,但是使用Java regex标志只能找到第一个而不是两者。
答案 0 :(得分:0)
Java没有全局标志。您可以通过find
和group
获得所有匹配项。
Pattern pattern = Pattern.compile("1");
Matcher matcher = pattern.matcher("111");
while (matcher.find()) {
System.out.println(matcher.group());
}
输出为
1
1
1
答案 1 :(得分:0)
Java 中不需要“g”标志。有同样效果的方法,像这样:
<块引用>replaceAll(regex, replacement)