我需要一个正则表达式来检查文件名是否与以下模式匹配:
report*.txt
并且不包含以下字符串“car
”。
因此,对于report_car_as.txt
,rep_as
,report_tds
,它应该 返回false ,对于report_abc.txt
,{{1}应该 返回true 。
我有以下代码行:
report_sa.txt
我不知道如何组合这两个正则表达式。你能帮帮我吗?
注意:我不允许使用像
这样的if语句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));
答案 0 :(得分:2)
根据您的要求,您可以使用此正则表达式^report((?!.*car).*)\.txt$
,其中:
^report
表示您的文件名以报告字
\.txt$
您的文件名以.txt
((?!.*car).*)
是report
和.txt
之间的内容,其中包含任何字符,但car
序列除外(?!
为负前瞻)。
如果car
字不能只在report
和txt
之间,您可以通过将(?!.*car).*
添加到正则表达式开头来指定它,例如{{1} }}