【问题标题】:Extract part of a string between two special characters in java在java中的两个特殊字符之间提取字符串的一部分
【发布时间】:2018-05-22 10:41:45
【问题描述】:
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.";

我想要两个特殊字符之间的额外字符串,例如||anystring||,但它不起作用。我尝试使用 Java 的 Pattern-Matcher,但它不起作用 - 它返回一个空数组。

我已尝试关注Java- Extract part of a string between two special characters

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

【问题讨论】:

    标签: java regex string split


    【解决方案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
    

    【讨论】:

      【解决方案2】:

      这是因为| 字符在正则表达式中具有特殊含义,因此您必须使用\ 字符对其进行转义。请参阅Regex101 上的演示。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-10
        • 2015-02-15
        相关资源
        最近更新 更多