我想对以下字符串进行正则表达式:
2004年阿斯顿……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
你的正则表达式等于/'s+|'.+/
如果你可以使用查找头,那么你可以这样做:
/('s+|'.+)(?=.*'.)/
使用正则表达式:
'.(?=.*'.)|'s
以上答案将导致正则表达式引擎回溯。
你应该避免*
(?=.*'.) should be converted to (?=[^.]*'.)