java - 在java中使用regex g标志

标签 java regex regex-group

是否可以在 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/

相关文章:

java - 如何在 Java 中重写数组的 equals?

regex - 如何替换正则表达式中的前瞻?

c# - 从 C# 启动进程时无法将自定义数量的 ram 分配给 java

jQuery:如何用反斜杠转义单引号和双引号

python - Python2 和 Python3 的正则表达式差异

python - 正则表达式:如何在不混合输出的情况下分离已解析的元素

正则表达式:用不一致的模式分隔字符串 (Oracle) (POSIX ERE)

如果最后存在,则通过删除模式来提取正则表达式

java - 当空字段包含子字段时,GSON 转换错误

java - 如何创建控制复选框显示的自定义模型?