如何使正则表达式匹配此字符串?

时间:2011-11-15 09:23:39

标签: php regex

我想对以下字符串进行正则表达式:

2004 aston .... martin db9 31 m3.img

我希望模式匹配除最后一个点之外的所有空格和点(对于扩展名) 我做了以下模式

/\s{1,}|\.{1,}/

此模式匹配所有点和空格,包括最后一个点如何从字符串中排除最后一个点

好的,这里的代码也是(PHP)

$file = "2004 aston....martin db9 31 m3.img";

echo preg_replace("/\s{1,}|\.{1,}/", "_", $file);

,输出

2004_aston_martin_db9_31_m3_img

3 个答案:

答案 0 :(得分:3)

您的正则表达式相当于/\s+|\.+/

如果您可以使用前瞻,那么您可以这样做:

/(\s+|\.+)(?=.*\.)/

答案 1 :(得分:1)

使用此正则表达式:

\.(?=.*\.)|\s

答案 2 :(得分:0)

以上答案将导致正则表达式引擎回溯。

你应该避免。*

(?=.*\.) should be converted to (?=[^.]*\.)