我有一个String s = "HFGFHFFHSSH"
。我想要的输出是'H'之间的所有可能的子串组合
上面的String的输出应该是 HFGFH HFFH HSSH
我尝试了以下方法:
String s = "HFGFHFFHSSH";
Pattern pattern = Pattern.compile("H(.*?)H");
Matcher matcher = pattern.matcher(s);
while (matcher.find()){
System.out.println(matcher.group(0));
}
不幸的是,输出缺少一个子字符串,导致 HFGFH HSSH
您应该为此使用前瞻性正则表达式,并从前瞻性内部捕获值:
(?=(H[^H]*H))
(?=...)
是肯定的前瞻性,断言存在被H
两侧包围的文本(...)
前瞻内部用于捕获组#1中的匹配值代码:
String s = "HFGFHFFHSSH";
final Pattern pattern = Pattern.compile("(?=(H[^H]*H))");
Matcher matcher = pattern.matcher(s);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句