0

形式のファイル名を検索するには、正規表現が必要です: abc_abc0003_2012-14-11_1212_regex.txt. ファイル名のabc_abc0003_and_regex.txtは一定で、残りの部分は可変です。

私が試した正規表現は次のとおりです。

"abc_abc0003_" + "(19|20)\\d\\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])" + "[_0-9]*" + "_regex.txt"

これはJavaの関数ではうまくmatches()機能していますが、ファイル名の検索に同じものを使用すると機能しません。何か案が?

4

2 に答える 2

1

消極的な ( ) 量指定子を使用して、これを試してください ( _、数字、および のパターン)。-+

Pattern p = Pattern.compile("abc_abc0003_[_\\d-]+?_regex.txt");
Matcher m = p.matcher(inputStr);
while(m.find()) {
    System.out.println(m.group());
}
于 2012-11-14T05:16:14.970 に答える
1

以下のように正規表現を試して、両端の間にnumbers, _&を許可してください。-

     ^(abc\\_abc0003\\_)[\\_\\-\\d]+(\\_regex\\.txt)$

例えば

String regex12 = "^(abc\\_abc0003\\_)[\\_\\-\\d]+(\\_regex\\.txt)$";
Pattern pattern12 = Pattern.compile(regex12);
System.out.println(pattern12
                    .matcher("abc_abc0003_2012-14-11_1212_regex.txt")
                    .find());//prints true
System.out.println(pattern12
                    .matcher("abc_abc0003_2012-14-11_ab1212_regex.txt")
                    .find());//prints false
于 2012-11-14T05:20:20.437 に答える