Java-使用“时出现正则表达式错误”\\&引用;作为纤度计
下面的代码来自一个类中的一个方法,该类用于修改程序文件夹中的文件目录列表。但是,我尝试使用“\”作为扫描仪的分隔符,因为我只需要目录“S:\”的开头和最后一部分,即子文件夹的名称。例如,它看起来像这样: F:\Data\Subfolder\other 代码符合要求,但当我运行该方法时,会出现以下运行时错误: java.util.regex.PatternSyntaxException:索引1附近出现意外内部错误 \ 我只是想知道是否有人知道这意味着什么,我如何才能阻止它的发生。是因为使用\作为delimeter吗 注意:newFolder类是一个嵌套类Java-使用“时出现正则表达式错误”\\&引用;作为纤度计,java,regex,io,java.util.scanner,Java,Regex,Io,Java.util.scanner,下面的代码来自一个类中的一个方法,该类用于修改程序文件夹中的文件目录列表。但是,我尝试使用“\”作为扫描仪的分隔符,因为我只需要目录“S:\”的开头和最后一部分,即子文件夹的名称。例如,它看起来像这样: F:\Data\Subfolder\other 代码符合要求,但当我运行该方法时,会出现以下运行时错误: java.util.regex.PatternSyntaxException:索引1附近出现意外内部错误 \ 我只是想知道是否有人知道这意味着什么,我如何才能阻止它的发生。是因为使用\作为d
public void scanFiles() throws IOException{
try
{
System.out.println("Sage 2015 is Installed on this machine");
File companyFile = new File(sageFolders[8] + "\\COMPANY");
Scanner input = new Scanner(new BufferedReader(new FileReader(companyFile)));
input.useDelimiter("\\");
while(input.hasNextLine())
{
if(line.contains("F"))
{
String drive = input.next();
String dataFolder = input.next();
String sageFolder = input.next();
String clientFolder = input.next();
newFolders.add(new newFolder(drive, clientFolder));
}
}
//Close the Readers
fileReader.close();
bufferedReader.close();
//fileWriter = new FileWriter(companyFile);
//bufferedWriter = new BufferedWriter(fileWriter);
//Write back to file
//fileWriter.flush();
//bufferedWriter.close();
}
catch(FileNotFoundException e)
{
System.out.println("File not Found: Moving onto next Version");
}
}
class newFolder
{
private String driveLetter;
private String clientFolder;
public newFolder(String driveLetter, String clientFolder)
{
this.driveLetter = driveLetter;
this.clientFolder = clientFolder;
}
}
由于
\
是正则表达式的特殊字符,而且在Java中也是特殊的,因此您必须用\\
转义Java反斜杠,并用\
转义正则表达式反斜杠,因此。。。您有四个反斜杠\\\\
您必须使用:
input.useDelimiter("\\\\");