我正在尝试使用命令行“重命名”来更改一些包含多个句点的文件名。例如: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
最佳答案
由于几个原因,您的正则表达式不太正确。首先,您要替换空字符串的内容应该只是句点,而您要从一个句点匹配到下一个句点的所有内容并将其删除。而且,您只执行一次。
您想要的正则表达式是 /\.(?=.*\.)//g
,它表示匹配一个句点,后跟任意数量字符的零宽度断言另一个时期,并尽可能多地这样做。
关于regex - Perl 正则表达式删除除最后一次出现之外的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14677871/