20

例如匹配任何文件夹名称,除了扩展名之前有点(。)的文件
我尝试[^\.].+[^\.].*没有任何工作

4

5 回答 5

34

你需要锚定它:

^[^.]+$

这将匹配由除点以外的任何字符组成的字符串。这就是你所说的“扩展前”吗?如果您的意思是“一开始”,那么^[^.]就可以了。

但是,如果这不是 grep 之类的东西,并且您拥有一门实际的编程语言,那么在那儿可能会更好地完成。(例如,即使使用 grep 也最好只写grep -v '^\.'。)

于 2013-01-08T05:40:20.360 回答
7

试试^[^.]+$。顺便说一句,您不需要在 [] 内转义点。

于 2013-01-08T05:41:19.313 回答
3

那这个呢:

^[^.]+$

演示正则表达式

于 2013-01-08T05:41:06.880 回答
2

你可以做:

^[^.]+$

或者

^(?!.*\.).*$
于 2013-01-08T05:41:34.280 回答
0

不要为此烦恼正则表达式,这很昂贵。这是一个更快的示例(在 php 中)

foreach($files as $file)
{
    // ignore dot files
    if( 0 === strpos($file,'.') ) continue;
    ...
}
于 2017-07-27T06:15:06.827 回答