正则表达式:不包含单词且与给定模式匹配的文件名
Regex expression: file names that do not contain a word and matches a given pattern
我需要一个正则表达式来检查文件名是否匹配以下模式:
report*.txt
且不包含以下字符串“car
”。
所以对于 report_car_as.txt
、rep_as
、report_tds
,它应该 return false,并且对于 report_abc.txt
、report_sa.txt
它应该 return true.
我有以下代码行:
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));
根据您的要求,您可以使用此正则表达式 ^report((?!.*car).*)\.txt$
,其中:
^report
表示您的文件名以报告词
开头
\.txt$
您的文件名以 .txt 结尾
((?!.*car).*)
是 report
和 .txt
之间的内容,其中包含除 car
序列之外的任何字符(?!
是负先行)。
如果 car
单词可能不只是在 report
和 txt
之间,您可以通过将 (?!.*car).*
添加到正则表达式开头来指定它,例如 ^(?!.*car).*report((?!.*car).*)\.txt$
我需要一个正则表达式来检查文件名是否匹配以下模式:
report*.txt
且不包含以下字符串“car
”。
所以对于 report_car_as.txt
、rep_as
、report_tds
,它应该 return false,并且对于 report_abc.txt
、report_sa.txt
它应该 return true.
我有以下代码行:
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));
根据您的要求,您可以使用此正则表达式 ^report((?!.*car).*)\.txt$
,其中:
^report
表示您的文件名以报告词
\.txt$
您的文件名以 .txt 结尾
((?!.*car).*)
是 report
和 .txt
之间的内容,其中包含除 car
序列之外的任何字符(?!
是负先行)。
如果 car
单词可能不只是在 report
和 txt
之间,您可以通过将 (?!.*car).*
添加到正则表达式开头来指定它,例如 ^(?!.*car).*report((?!.*car).*)\.txt$