正则表达式匹配不含点字符的任何字符串

20
例如匹配除了文件扩展名前有点(.)的文件夹名称
我尝试使用[^\.].+[^\.].*两种方式,但都没有起作用。

这是一个 PHP 的问题吗?你使用的编程语言/环境是什么? - mickmackusa
5个回答

37

你需要锚定它:

^[^.]+$

那将匹配除点以外的任何字符组成的字符串。 这就是您所说的“在扩展名之前”吗? 如果您的意思是“在开头”,那么 ^ [^.] 就能做到。

但是,如果这不是像grep或其他工具的话,而是一个实际的编程语言,最好在那里完成此操作。 (即使使用grep也最好只写 grep -v '^\.',例如。)


7

可以尝试使用^[^.]+$。顺便说一句,在[]内部不需要转义点号。


3

3
你可以做:
^[^.]+$

或者

^(?!.*\.).*$

0

不要费力去用正则表达式,那样很耗费资源。这里有一个更快的例子(php语言)

foreach($files as $file)
{
    // ignore dot files
    if( 0 === strpos($file,'.') ) continue;
    ...
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接