我正在尝试使用命令行“rename”来更改包含多个句点的某些文件名。例如:this.is.a.file.name.txt
在环顾四周之后,我发现了一些几乎让我在那里的例子,但我似乎无法按要求让它工作。毋庸置疑,我是一个非常绿色的初学者,有正则表达式。
我试过这个:
rename -v -n 's/\.(.+?)(?=\.)//' this.is.a.file.name.txt
结果如下:
this.a.file.name.txt
我试图修改以下资源中的示例,但我被卡住了。 PHP Regex: Select all except last occurrence Regex not replacing the last occurrence of a match
答案 0 :(得分:5)
由于几个原因,你的正则表达式并不完全正确。首先,你用空字符串代替的东西应该只是句号,而你是从句号到下一个句号的所有内容进行匹配并删除它。而且,你只做了一次。
你想要的正则表达式是/\.(?=.*\.)//g
,它表示匹配一个句点,后面跟着一个零宽度断言任意数量的字符和另一个句点,然后尽可能多地这样做。