2011-11-03 81 views

回答

2

这是一个正则表达式,你可以使用:

^[a-zA-Z0-9\-]+\.log$ 
+0

您不需要使用反斜杠在方括号内跳过短划线。 –

+0

@AdamZalcman不需要它,但我喜欢逃避它,因为我喜欢重用代码。所以如果我编辑这个正则表达式,我不会再检查所有非转义的字符。 –

1

有了不区分大小写的正则表达式:

^[A-Z]+-([0-9]{2}-){2}[0-9]{4}\.log$ 

这是一个有点比你的要求更精确的(它匹配的文本-NN-NN-nnnn.log,其中n是一个数字)。如果您正在使用POSIX正则表达式(如在grep为例),你将不得不逃避括号和括号:

[A-Z]+-\([0-9]\{2\}-\)\{2\}[0-9]\{4\}\.log$ 
3

你可以试试:

^[a-z0-9-]+\.log$ 
+0

如果你没有停住,我会投你一票。如果验证字符串,锚定只是正确的,但我们不知道那是怎么回事。 –

+0

唉,看起来完美的东西(词尾的锚)并不是由POSIX RE规范定义的,所以我们进入了扩展的领域,我们不知道哪个确切的方言是正在使用。 –

3

你正在寻找的正则表达式是

^[A-Za-z0-9-]*\.log$ 

请注意,点需要转义,破折号必须是方括号内的第一个或最后一个字符(否则它表示字符范围)。

请注意,这与文件名'.log'匹配。将星号替换为加号,使它与'.log'中的点之前的至少一个字符匹配。

+0

这个人也会接受这个文件名“.log” –

+0

没错。在* vs +上添加了一个注释。 –

相关问题