提取java中两个特殊字符之间的字符串部分

提取java中两个特殊字符之间的字符串部分,java,regex,string,split,Java,Regex,String,Split,我希望在两个特殊字符(如| | anystring | |)之间有额外的字符串,但它不起作用。我尝试使用Java的模式匹配器,但它不起作用-它返回一个空数组 我试着跟随 之所以发生这种情况,是因为\字符在正则表达式中有特殊含义,所以必须使用\字符对其进行转义。请参阅上的演示 此外,在Java中,必须使用双反斜杠\\转义此字符 Pattern pattern = Pattern.compile("||(.*?)||"); 您需要退出| Pattern pattern = Pattern.comp

我希望在两个特殊字符(如
| | anystring | |
)之间有额外的字符串,但它不起作用。我尝试使用Java的模式匹配器,但它不起作用-它返回一个空数组

我试着跟随


之所以发生这种情况,是因为
\
字符在正则表达式中有特殊含义,所以必须使用
\
字符对其进行转义。请参阅上的演示

此外,在Java中,必须使用双反斜杠
\\
转义此字符

Pattern pattern = Pattern.compile("||(.*?)||");

您需要退出
|

Pattern pattern = Pattern.compile("\\|\\|(.*?)\\|\\|");
结果:

String stringToSearch = "About ||PrimarySchool|| %  of children in ||Country|| attend primary school. ||SecondarySchoolFemale|| % of girls and ||SecondarySchoolMale|| % of boys finish secondary school. Literacy is ||LiteracyFemale|| % for females and ||LiteracyMale|| % for males.";
Pattern pattern = Pattern.compile("\\|\\|([^|]*)\\|\\|");
Matcher matcher = pattern.matcher(stringToSearch);
while (matcher.find()) {
    System.out.println(matcher.group(1));
}
String stringToSearch = "About ||PrimarySchool|| %  of children in ||Country|| attend primary school. ||SecondarySchoolFemale|| % of girls and ||SecondarySchoolMale|| % of boys finish secondary school. Literacy is ||LiteracyFemale|| % for females and ||LiteracyMale|| % for males.";
Pattern pattern = Pattern.compile("\\|\\|([^|]*)\\|\\|");
Matcher matcher = pattern.matcher(stringToSearch);
while (matcher.find()) {
    System.out.println(matcher.group(1));
}
PrimarySchool
Country
SecondarySchoolFemale
SecondarySchoolMale
LiteracyFemale
LiteracyMale