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”。。。例如