Java中的正则表达式非法字符

Java中的正则表达式非法字符,java,regex,illegal-characters,Java,Regex,Illegal Characters,我在一次头痛之后一直在网上浏览,我找不到为什么这个正则表达式是错误的: "\"\w*&&[\p{Punct}]\"["+sepChar+"]\"\w*&&[\p{Punct}]\"" 我正在尝试使用以下模式(包括引号)读取主数据文件: 并使用上面的正则表达式拆分每一行 例如: "Hello:John":"Hello:World":"Hello:Mark" "TEXTVALUE":"TEXTVALUE":"TEXTVALUE" 将分为: {"Hello:Joh

我在一次头痛之后一直在网上浏览,我找不到为什么这个正则表达式是错误的:

"\"\w*&&[\p{Punct}]\"["+sepChar+"]\"\w*&&[\p{Punct}]\""
我正在尝试使用以下模式(包括引号)读取主数据文件:

并使用上面的正则表达式拆分每一行

例如:

"Hello:John":"Hello:World":"Hello:Mark"
"TEXTVALUE":"TEXTVALUE":"TEXTVALUE"
将分为:

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

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

尝试:


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

尝试:

感谢@kevin bowersox的帮助

看来Oracle在用版本7改进Java方面做得很好。 使用此代码:

File file = new File(someFile);
BufferedReader br = new BufferedReader(file);
String line = null;
while((line = br.readLine()) != null){
  //todo
}
如果您的文件已使用固定模式格式化,例如:

"Hello:John":"Hello:World":"Hello:Mark"
"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
public ArrayList getSplittedTextFromFile(字符串文件路径)抛出FileNotFoundException、IOException{
ArrayList ret=null;
如果(!filePath.isEmpty()){
文件输入=新文件(文件路径);
BufferedReader br=新的BufferedReader(输入);
字符串行=null;
而((line=br.readLine())!=null){
字符串[]aSplit=line.split(\\t“);
if(ret==null)
ret=新的ArrayList();
重新添加(aSplit);
}//当
}//fi
}//fnc
好的

感谢@kevin bowersox的帮助

看来Oracle在用版本7改进Java方面做得很好。 使用此代码:

File file = new File(someFile);
BufferedReader br = new BufferedReader(file);
String line = null;
while((line = br.readLine()) != null){
  //todo
}
如果您的文件已使用固定模式格式化,例如:

"Hello:John":"Hello:World":"Hello:Mark"
"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
public ArrayList getSplittedTextFromFile(字符串文件路径)抛出FileNotFoundException、IOException{
ArrayList ret=null;
如果(!filePath.isEmpty()){
文件输入=新文件(文件路径);
BufferedReader br=新的BufferedReader(输入);
字符串行=null;
而((line=br.readLine())!=null){
字符串[]aSplit=line.split(\\t“);
if(ret==null)
ret=新的ArrayList();
重新添加(aSplit);
}//当
}//fi
}//fnc

@Wolfchamane-是的,你是。您正试图包含一个正斜杠以避开“w”。。。例如。@Wolfchamane-是的,你是。您正试图包含一个正斜杠以避开“w”。。。例如