Java 正则表达式来匹配带星号的字符串

Java 正则表达式来匹配带星号的字符串,java,arrays,regex,file,regex-negation,Java,Arrays,Regex,File,Regex Negation,我正在用Java编写代码,我想拆分字符串。我想把它分成两份 /* sort */ 是的,我计划拆分一个作为字符串读取的.java文件,因此我需要它包含“/*sort*/”。我正在创建一段代码,对java类文件中预定义的数组进行排序 正是这样,然后再做一次分裂 } 然后我想知道如何分割阵列,因为我只剩下 举个例子 final static String[] ANIMALS = new String[] /* sort */ { "eland", "antelope", "hippopotamu

我正在用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]);
    }
}
private void editFile()引发IOException{
//将整个文本或java文件加载到字符串中
try(BufferedReader br=new BufferedReader(new FileReader(fileChoice())){
StringBuilder sb=新的StringBuilder();
String line=br.readLine();
while(行!=null){
某人附加(行);
sb.append(System.lineSeparator());
line=br.readLine();
}
一切=某人做某事;
}
arrayCutOff=everything.split(“///*sort*//”;
for(int i=0;i

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

考虑到您使用的是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);
}
private void editFile()引发IOException{
列表行=Files.readAllLines(path.get(fileChoice());
字符串内容=lines.stream().collect(collector.joining(System.lineSeparator());
Stream.of(content.split(Pattern.quote(“/*sort*/”)).forEach(System.out::println);
}

然而,您需要的技巧是
Pattern.quote
,它可以追溯到Java5。它将生成一个文本,因此可以在正则表达式中用作文本,并且比使用反斜杠更方便(我认为也是可靠的)…

考虑到您使用的是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);
}
private void editFile()引发IOException{
列表行=Files.readAllLines(path.get(fileChoice());
字符串内容=lines.stream().collect(collector.joining(System.lineSeparator());
Stream.of(content.split(Pattern.quote(“/*sort*/”)).forEach(System.out::println);
}

然而,您需要的技巧是
Pattern.quote
,它可以追溯到Java5。它将生成一个文本,因此可以在正则表达式中用作文本,并且比使用反斜杠更方便(我认为也更可靠)…

你想说什么,听起来很困惑。你能用这个例子再解释一下吗?@ZubairNabi刚刚举了一个例子。你真的在问如何在正则表达式中转义特殊字符吗?你在网上找不到任何答案?你是想说你想重新绘制这个“{”大羚羊“,”羚羊“,”河马“}”,考虑到正则表达式转义使用的是
\
,你到底是怎么想到
“//////*sort*//*”sort*//”
作为正则表达式匹配字符串
/*sort*/
的Java文本的,不是
/
,来转义特殊字符吗?你想说什么,听起来很困惑。你能用这个例子再解释一下吗?@ZubairNabi刚刚举了一个例子。你真的在问如何在正则表达式中转义特殊字符吗?你在网上找不到任何答案?你是想说你想重新绘制这个“{”大羚羊“,”羚羊“,”河马“}”,考虑到正则表达式转义使用的是
\
,你到底是怎么想到
“//////*sort*//*”sort*//”
作为正则表达式匹配字符串
/*sort*/
的Java文本的,不是
/
,以转义特殊字符?