【问题标题】:Regex to match a String with asterisk正则表达式匹配带星号的字符串
【发布时间】:2017-04-05 05:56:55
【问题描述】:

我正在使用 Java 进行编码,我想拆分我的字符串。我想拆分它。

/* sort */

是的,我打算将一个已读取为字符串的 .java 文件拆分,因此我需要它包含“/* sort */”。我正在创建一个对 java 类文件中预定义的数组进行排序的代码。

正是如此,然后在

处进行另一个拆分
}

然后我想要帮助如何拆分数组,因为我将留下

一个例子是这样的

final static String[] ANIMALS = new String[] /* sort */ { "eland", "antelope", "hippopotamus"};

我的目标是在 .java 文件中对该数组进行排序并替换它。这是我当前的代码

    private void editFile() throws IOException {
    //Loads the whole Text or java file into a String
    try (BufferedReader br = new BufferedReader(new FileReader(fileChoice()))) {
        StringBuilder sb = new StringBuilder();
        String line = br.readLine();

        while (line != null) {
            sb.append(line);
            sb.append(System.lineSeparator());
            line = br.readLine();
        }
        everything = sb.toString();
    }
    arrayCutOff = everything.split("////* sort *////");
    for(int i = 0; i < arrayCutOff.length; i++){
        System.out.println(arrayCutOff[i]);
    }
}

这基本上以完全相同的格式将整个 .txt 或 .java 文件完全读取到一个字符串中。我计划将它拆分为 /* sort */ 并对里面的数组进行排序,但我意识到如果我这样做了,我可能无法替换它。

【问题讨论】:

  • 你想说什么,你听起来很困惑。你能用例子解释一下吗?
  • @ZubairNabi 只是举了个例子
  • 您真的在问如何转义正则表达式中的特殊字符吗?您在网上找不到任何个答案吗?
  • 你是不是想说你要替换这个`{"eland", "antelope", "hippopotamus"}'
  • 你到底是怎么想出"////* sort *////"作为匹配字符串/* sort */的正则表达式的Java文字,因为正则表达式转义使用\,而不是/来转义特殊字符?

标签: java arrays regex file regex-negation


【解决方案1】:

考虑到您正在使用 java 8,您可能会朝这个方向发展:

private void editFile() throws IOException {
  List<String> lines = Files.readAllLines(Paths.get(fileChoice()));
  String content = lines.stream().collect(Collectors.joining(System.lineSeparator()));
  Stream.of(content.split(Pattern.quote("/* sort */"))).forEach(System.out::println);
}

但是,您要求的技巧是 Pattern.quote,它可以追溯到 Java 5。它会引用一个文字,因此它可以在 regExs 中用作文字,并且更方便(我认为可靠)而不是与反斜杠搏斗......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-08
    • 2019-05-28
    • 1970-01-01
    • 1970-01-01
    • 2018-07-26
    • 2010-09-13
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多