Regex可以修复文件名开头的错误deliminator



我一直在尝试编写一个正则表达式,以更正电子书文件名中作者名称后的错误deliminator。在Javascript中使用文件重命名器。

这就是我目前所拥有的:

演示在这里

^(.*?)b(- | --| -- |-- | -)b

每个文件名中的第一个deliminator应该是"-"这些是我试图纠正的类型:

Author Name -Series 00 -Title.txt
Author_Name --Series 01 -Title -Genre.txt
File_Name1-- Sometext- more-info (V1.0).txt
Joe Bloggs- Blah
David Cay-Johnston -- Free Lunch.rtf

--------------不匹配---------------

Jackie S. Newton-Paines - Blah- The Biography.epub
Fred Bloggs - Series - title.txt

如果我将正则表达式更改为:

^(.*?)b(- | --| -- |-- | -| - )b 

带REPLACE:

"$1 - "

然后它就工作了,但不允许我看到预览中要做什么更改,因为它会将每个"-"更改为"-"。(我使用替换"!$1-",然后在预览时排序,看看在应用之前要做什么更改)

有没有一种方法可以停止正则表达式匹配"-"和之后的任何内容,这样我就可以预览更改了?谢谢

本质上,您不希望前缀(.*?)包含字符串--对吗?

好吧,您可以通过使用负前瞻来匹配字符串-开头的"任何字符".来确保情况就是这样。具体来说,将(.*?)替换为((?! - ).)*?

然后,您的完整正则表达式应该是:^(((?! - ).)*?)b(- | --| -- |-- | -)b

相关内容

最新更新