我想编写一个正则表达式,它会递归地去除某些文件扩展名(不是全部)。要剥离的扩展名是.ready、.done和.error。应通过单个组项提供匹配项。
例如:
HelloWorld.xml --> HelloWorld.xml
Hello@World.xml.ready --> Hello@World.xml
Yaba_Daba-Doo.aaa.orig --> Yaba_Daba-Doo.aaa.orig
HelloWorld.xml.ready.error --> HelloWorld.xml
yogibear.xml.ready.done --> yogibear.xml
HelloWorld.bbb.done --> HelloWorld.bbb
Merry Chrismas.ready.yyy --> Merry Chrismas.ready.yyy
所以,我想出了以下简单的正则表达式 -^(.+)(?:\.(?:ready|done|error))*$
唉,它没有按预期工作,因为(.+)
似乎是一个贪婪的匹配。
PS 不幸的是,它可以是任何文件名。我唯一想要的是修剪任何尾随.ready
,.done
和/或.error
. 我知道我可以在代码中做到这一点,但我有兴趣知道如何用正则表达式解决这个问题,因为我觉得这是可能的。