Java 如何使用正则表达式匹配文本中所有满意的字符串?
我使用像Java 如何使用正则表达式匹配文本中所有满意的字符串?,java,regex,Java,Regex,我使用像(J|N){1}N这样的模式来匹配像JNN这样的文本 使用此模式,我只能在文本中获得JN。但是,我希望同时获得JN和NN 我怎样才能得到满足模式的所有子字符串 如果文本类似于jnnn…是否有一种方便的方法来获取所有匹配的字符串?使用一个正向前瞻来捕获重叠的匹配 (?=([JN]N)) 例如: String s = "JNNNNJNN"; Pattern p = Pattern.compile("(?=([JN]N))"); Matcher m = p.matcher(s); whil
(J|N){1}N
这样的模式来匹配像JNN
这样的文本
使用此模式,我只能在文本中获得JN
。但是,我希望同时获得JN
和NN
我怎样才能得到满足模式的所有子字符串
如果文本类似于
jnnn…
是否有一种方便的方法来获取所有匹配的字符串?使用一个正向前瞻来捕获重叠的匹配
(?=([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
查看此网站,它确实很方便: 对于JN和NN,您需要的是 /[J | N]N/g 这将确实与Jnnnnnnnnnn中的JN nnnn匹配 我希望这有帮助
为什么不
JN+
?。我很困惑,你想匹配什么?你的图案是什么?那将是最长的。但术语长度是固定的。模式是(J|N){1}N。可能相关:尝试用一个更好的例子来说明。