java regex - 匹配存储在变量中的字符串的一部分

时间:2014-03-10 15:03:10

标签: java regex variables

我需要在文件夹路径中提取文件所在的目录。为此,我创建了一个简单的正则表达式。以下是示例路径\\myvdi\Prod\2014\10\LTCG\LTCG_v2306_03_07_2014_1226.pfd

下面的正则表达式将找到我需要的内容,但我的问题是将其存储到变量中。这就是我在下面的内容。它在字符串数组中失败

  String[] temp = targetFile.split("\\.*\\");
  folder = temp[0];

建议?

谢谢!

修改 引发的异常是:java.util.regex.PatternSyntaxException: Unexpected internal error near index 4

3 个答案:

答案 0 :(得分:2)

如果您的文件系统中的路径有效,我建议您不要使用正则表达式并使用File对象:

String path = "\\myvdi\\Prod\\2014\\10\\LTCG\\LTCG_v2306_03_07_2014_1226.pfd";
File file = new File(path);
System.out.println(file.getParent());

<强>输出

\\myvdi\\Prod\\2014\\10\\LTCG\\

答案 1 :(得分:0)

简单地说,您需要:

String path = "\\myvdi\\Prod\\2014\\10\\LTCG\\LTCG_v2306_03_07_2014_1226.pfd";
String dir = path.substring(0, path.lastIndexOf("\\") + 1);

答案 2 :(得分:0)

你应该使用Pattern&amp;比较强大的匹配者;从你的描述我不确定你是否想要获得整个文件夹路径,但如果是,这是一个解决方案:

String s = "\\\\myvdi\\Prod\\2014\\10\\LTCG\\LTCG_v2306_03_07_2014_1226.pfd";

Pattern p = Pattern.compile("^(\\\\+[a-zA-Z0-9_-]+\\\\+([a-zA-Z0-9_-]+\\\\+)+).+$");
Matcher m = p.matcher(s);
if(m.matches()){

  System.out.println(m.group(m.groupCount()-1));
}