我想对以下字符串进行正则表达式:
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
答案 0 :(得分:3)
您的正则表达式相当于/\s+|\.+/
如果您可以使用前瞻,那么您可以这样做:
/(\s+|\.+)(?=.*\.)/
答案 1 :(得分:1)
使用此正则表达式:
\.(?=.*\.)|\s
答案 2 :(得分:0)
以上答案将导致正则表达式引擎回溯。
你应该避免。*
(?=.*\.) should be converted to (?=[^.]*\.)