java - 如何使用正则表达式来匹配文本中所有满足的字符串?

标签 java regex

我使用类似 (J|N){1}N 的模式匹配类似 JNN 的文本。

使用这种模式我只能得到 JN在文字中。不过我想同时获得 JNNN

如何获取所有满足模式的子字符串?

如果文本类似于 JNNNN...有没有一种方便的方法来获取所有匹配的字符串?

最佳答案

使用正向前瞻捕获重叠匹配。

(?=([JN]N))

示例:

String s  = "JNNNNJNN";
Pattern p = Pattern.compile("(?=([JN]N))");
Matcher m = p.matcher(s);
while (m.find()) {
  System.out.println(m.group(1));
}

输出

JN
NN
NN
NN
JN
NN

关于java - 如何使用正则表达式来匹配文本中所有满足的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25531215/

相关文章:

java - spring session redis 'No bean named ' springSessionRepositoryFilter'已定义'

java - 执行插入语句后,如何获取包含 id 值的语句?

javascript - JS 正则表达式替换不起作用

regex - perl 正则表达式替换中的条件

java - 为什么这个 Java 方法调用被认为是不明确的?

java - 如何在spring mvc中的servlet xml文件中导入xml文件

java并发写入集合,然后读取 - 结果不一致

regex - 使用正则表达式清理日期(特别是年份)

java - 小心 : Splitting a string by newlines can cause bothering bugs

javascript - 组条件的正则表达式