【发布时间】:2016-02-09 21:28:40
【问题描述】:
我需要一个正则表达式来检查文件名是否与以下模式匹配:
report*.txt 并且不包含以下字符串“car”。
所以对于report_car_as.txt、rep_as、report_tds,它应该返回false,对于report_abc.txt、report_sa.txt,它应该返回真。
我有以下代码行:
final File f = new File("~/home/report_fds.txt");
final String regex1 = "^((?!car).)*$";
final String regex2 = "report.*\\.txt";
System.out.println(f.getName().matches(regex2));
我不知道如何组合这 2 个正则表达式。你能帮帮我吗?
注意:我不允许使用类似的 if 语句
if(a.matches(regex1) && a.matches(regex2));
【问题讨论】:
-
也许,
^(?!.*car).*report[^/]*\.txt$。或^.*(?!.*car)report[^/]*\.txt$。这取决于应该禁止car的位置。或类似^~(?:/[^/]*)*(?!.*car)report[^/]*\.txt$.
标签: java regex regex-negation