基于Java中的正则表达式从文件名中提取值

基于Java中的正则表达式从文件名中提取值,java,regex,filenames,Java,Regex,Filenames,假设我的文件名模式是这样的,%\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 现在,我如何在java中获得文件名上那些正则表达式的实际值 例如,如果实际文件名是\u 20151105.xls的Genr\u Report\u 123\u如何获取 %# value is Genr %$ value is 1

假设我的文件名模式是这样的,
%\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

现在,我如何在java中获得文件名上那些正则表达式的实际值

例如,如果实际文件名是\u 20151105.xls的
Genr\u Report\u 123\u
如何获取

%# value is Genr
%$ value is 123
%& value is 20151105

您可以这样做:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Rgx {

    private String str1 = "", str2 = "", date = "";

    public static void main(String[] args) {
        String fileName = "Genr_Report_123_for_20151105.xls";

        Rgx rgx = new Rgx();
        rgx.extractValues(fileName);
        System.out.println(rgx.str1 + " " + rgx.str2 + " " + rgx.date);
    }

    private void extractValues(String fileName) {
        Pattern pat = Pattern.compile("([^_]+)_Report_([^_]+)_for_([\\d]+)\\.xls");
        Matcher m = pat.matcher(fileName);

        if (m.find()) {
            str1 = m.group(1);
            str2 = m.group(2);
            date = m.group(3);
        }
    }
}

文件regex是%#u Report\uu%$\ u for_%&.xlsUse
“^([^ _]+)\u Report\uU([^ _]+)\.xls$”
,并使用捕获组。你能帮我为此编写代码吗我会问你做了什么,但似乎没有明确的答案。如果你试图实现它,但它不起作用,请将其张贴在问题中,我会帮助你。我尝试过匹配器和模式,但我找不到解决方案谢谢你的回复,