我得到了String s = "HFGFHFFHSSH"
。我想要的输出是'H'
上述字符串的输出应为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
答案 0 :(得分:2)
您应该使用前瞻性正则表达式并从前瞻中捕获值:
(?=(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));
}