Regex 正则表达式匹配包含单词的文件名,不考虑大小写

Regex 正则表达式匹配包含单词的文件名,不考虑大小写,regex,Regex,我需要一个正则表达式,它匹配任何类型的文件名.png,在所有情况下都包含单词icon。 所以它应该匹配 icon.png myicon.png thisIcon.PnG aniCon_this.png ANYICON.PNG iconno2@me.png 谢谢你的帮助!! 谢谢 PS:I'm in java如果您只需要验证文件名,这应该可以做到: Pattern regex = Pattern.compile("^.*icon.*\\.png$", Pattern.CASE

我需要一个正则表达式,它匹配任何类型的文件名
.png
,在所有情况下都包含单词
icon
。 所以它应该匹配

icon.png
myicon.png
thisIcon.PnG
aniCon_this.png
ANYICON.PNG
iconno2@me.png
谢谢你的帮助!! 谢谢
PS:I'm in java

如果您只需要验证文件名,这应该可以做到:

Pattern regex = Pattern.compile("^.*icon.*\\.png$", Pattern.CASE_INSENSITIVE);
如果还获取路径,并希望提取文件名,请使用以下命令:

Pattern regex = Pattern.compile("(?<=^|[\\\\/])([^\\\\/]*icon[^\\\\/]*\\.png)$", Pattern.CASE_INSENSITIVE);

Pattern regex=Pattern.compile((?Like@Sebastian p)提到:

/^.*icon.*\.png$/i

除了在末尾添加I标志以将其标记为不区分大小写之外。

您需要的模式如下:

(?xsiu) \A .* icon .* \. png \z

是的,但是
C:\icons\panda.png
也会匹配。@Sebaastin:So?这就是要求。@tchrist:如果您重新阅读要求,它应该匹配任何包含
icon
并以
.png
结尾的文件名。如果路径是
C:\icons\panda.png
,则文件名不包含
icon
,即路径是的。@Sebastian:如果open(2)系统调用接受它,它显然是一个文件名。目录分隔符的存在或不存在是由namei(9)为您解决的问题,与您是否拥有合法的文件名无关。这意味着
“/”
”一样是一个文件名。。“
”…“
“foo”
“foo/foo”
“/foo/foo.foo.foo/。/foo/.foo”
是。@SebastianP,尽管我确信额外的里程是值得的,但没有迹象表明原始输入将包括一个文件路径,只有一个文件名。;-)