Я хочу разбирать почти программу. Программа состояла из двух линий и показано ниже:Разделительные линии регулярного выражения в Java
java.io.*;
java.lang.*;
Я использую библиотеку, которая считывает всю программу и расщепляет ее с помощью команды
String[] words = sourceCode.split("[\\s+|\\W+]");
Что производится тем является следующим
words[0] = "Java"
words[1] = "io"
words[2] = ""
words[3] = ""
words[4] = ""
words[5] = ""
words[6] = Java
words[7] = "lang"
words[8] = ""
words[9] = ""
words[10] = ""
words[11] = ""
Однако, я хочу, чтобы сначала разбить эту программу в строках, а затем на компоненте линии. То есть, я использую
String[] allLines = file1String.split("[\n]");
String[][] wordsOfALine =new String[allLines.length][];
for (int i=0;i<allLines.length;i++){
wordsOfALine[i] = allLines[i].split("[\\s+|\\W+]").clone();
}
Однако то, что я получаю здесь
wordsOfALine[0][0] = "Java"
wordsOfALine[0][1] = "io"
wordsOfALine[1][0] = "Java"
wordsOfALine[1][1] = "lang"
И поэтому все пустые слова, теперь исчезли. Вы знаете, как я могу вернуть их? Мне нужно, чтобы быть в соответствии с библиотекой ...
Благодаря
Я думаю, что я хотел бы использовать лексер, а не регулярное выражения для этого, но это может отражать только свои собственные предубеждения ... – keshlam
Вы ночью хочет прочитать о какие _character classes_. – devnull