在经历了一次令人头疼的事情后,我一直在寻找互联网,无法找到这个正则表达式错误的原因:
"\"\w*&&[\p{Punct}]\"["+sepChar+"]\"\w*&&[\p{Punct}]\""
我正在尝试使用以下模式读取主数据文件(包括引号):
"TEXTVALUE":"TEXTVALUE":"TEXTVALUE"
并用上面的正则表达式分割每一行。
所以,例如:
"Hello:John":"Hello:World":"Hello:Mark"
将分为:
{"Hello:John", "Hello:World", "Hello:Mark"}
答案 0 :(得分:3)
反向斜杠是Java中的转义字符。您需要使用两个反斜杠\\
在正则表达式中包含一个反斜杠。
尝试:
"\"\\w*&&[\\p{Punct}]\"["+sepChar+"]\"\\w*&&[\\p{Punct}]\""
答案 1 :(得分:0)
确定。
感谢@ kevin-bowersox的帮助。
似乎Oracle在使用版本7改进Java方面做得很好。 使用此代码:
File file = new File(someFile);
BufferedReader br = new BufferedReader(file);
String line = null;
while((line = br.readLine()) != null){
//todo
}
如果您的文件已使用常量patern格式化,例如:
"TEXTVALUE":"TEXTVALUE":"TEXTVALUE"
它的内容如下:
"TEXTVALUE-->TEXTVALUE-->TEXTVALUE"
其中' - >'代表制表符('\ t')
所以,最后,我的解决方案是:
public ArrayList getSplittedTextFromFile(String filePath) throws FileNotFoundException, IOException{
ArrayList<String[]> ret = null;
if (!filePath.isEmpty()){
File input = new File(filePath);
BufferedReader br = new BufferedReader(input);
String line = null;
while((line = br.readLine()) != null){
String[] aSplit = line.split("\\t");
if (ret == null)
ret = new ArrayList<>();
ret.add(aSplit);
}//while
}//fi
}//fnc