1、代码
/**
* 描述:获取字符串中被两个字符(串)包含的所有数据
* @param str 处理字符串
* @param start 起始字符(串)
* @param end 结束字符(串)
* @param isSpecial 起始和结束字符是否是特殊字符
* @return Set<String>
*/
public static Set<String> getStrContainData(String str, String start, String end, boolean isSpecial){
Set<String> result = new HashSet<>();
if(isSpecial){
start = "\\" + start;
end = "\\" + end;
}
String regex = start + "(.*?)" + end;
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
while(matcher.find()){
String key = matcher.group(1);
if(!key.contains(start) && !key.contains(end)){
result.add(key);
}
}
return result;
}
2、测试
public static void main(String[] args) {
String str = "1{234}567{891}2345{678}9";
Set<String> result = getStrContainData(str, "{", "}", true);
for (String key : result) {
System.out.println(key);
}
}
3、结果
891
234
678