gpt4 book ai didi

java - 正则表达式 : file names that do not contain a word and matches a given pattern

转载 作者:行者123 更新时间:2023-11-30 08:44:49 26 4
gpt4 key购买 nike

我需要一个正则表达式来检查文件名是否匹配以下模式:report*.txt 并且不包含以下字符串“car”。所以对于 report_car_as.txtrep_asreport_tds,它应该返回 false,对于 report_abc.txtreport_sa.txt 它应该返回 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));

我不知道如何组合这两个正则表达式。你能帮帮我吗?

注意:我不允许使用类似 if 的语句

 if(a.matches(regex1) && a.matches(regex2));

最佳答案

根据您的要求,您可以使用此正则表达式 ^report((?!.*car).*)\.txt$,其中:

^report 表示,你的文件名以 report word 开头

\.txt$ 您的文件名以 .txt 结尾

((?!.*car).*)是介于report.txt之间的内容,包含任意字符,除了car 序列(?! 是负先行)。

如果 car 单词可能不只是在 reporttxt 之间,您可以通过添加 (? !.*car).* 到正则表达式开头,例如 ^(?!.*car).*report((?!.*car).*)\.txt$

关于java - 正则表达式 : file names that do not contain a word and matches a given pattern,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33605669/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com