0

头疼之后,我一直在网上寻找,找不到这个正则表达式错误的原因:

"\"\w*&&[\p{Punct}]\"["+sepChar+"]\"\w*&&[\p{Punct}]\""

我正在尝试使用以下模式读取主数据文件(包括引号):

"TEXTVALUE":"TEXTVALUE":"TEXTVALUE"

并用上面的正则表达式分割每一行。

因此,例如:

"Hello:John":"Hello:World":"Hello:Mark"

将分为:

{"Hello:John", "Hello:World", "Hello:Mark"}
4

2 回答 2

3

反斜杠是 Java 中的转义字符。您需要使用两个反斜杠\\来在正则表达式中包含一个反斜杠。

尝试:

"\"\\w*&&[\\p{Punct}]\"["+sepChar+"]\"\\w*&&[\\p{Punct}]\""
于 2013-07-31T08:59:51.200 回答
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
}

如果您的文件已使用常量模式格式化,例如:

"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
于 2013-07-31T11:06:36.500 回答