问题 java nio negate a glob pattern 问如何使一个glob模式匹配不以给定字符开头的字符串,比如“a”。接受的答案
"[!a]*"
适用于起始字符以及结束字符
"*[!a]"
然而,它不适用于两者之间的位置。例如
"*[!.]*"
不会过滤掉文件名中某处带有点的文件名。 (当然,当然,
"*.*"
会过滤掉没有点的文件名。)如何进行内部字符否定?
答案 0 :(得分:1)
它在匹配器中间完美运行。需要注意的是foo.bar
与*[!.]*
匹配
要表明这是一场比赛:
foo.b
。这是允许的,因为它可以匹配任何长度的任何字符串。[!.]
匹配a
r
这是完整输入,因此foo.bar
匹配*[!.]*
。
模式匹配"任何包含不是句点"的字符的字符串。你反而想要"任何在任何地方都不包含任何句号的字符串"。
在正则表达式中,这是^.*[^.].*$
和^([^.])*$
之间的区别。
不幸的是,整体并不足以表达你想要的东西。