基于 Java 中的正则表达式从文件名中提取值
Extracting a value from a file name base on regex in Java
假设我的文件名模式是这样的 %#_Report_%$_for_%&.xls
和 %#
和 %$
正则表达式可以有任何字符,但 %&
是一个日期。
现在如何获取 java 中文件名中那些正则表达式的实际值。
例如,如果实际文件名是 Genr_Report_123_for_20151105.xls
如何获得
%# 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);
}
}
}
假设我的文件名模式是这样的 %#_Report_%$_for_%&.xls
和 %#
和 %$
正则表达式可以有任何字符,但 %&
是一个日期。
现在如何获取 java 中文件名中那些正则表达式的实际值。
例如,如果实际文件名是 Genr_Report_123_for_20151105.xls
如何获得
%# 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);
}
}
}