正则表达式在文件名的开头修复坏的分隔符

时间:2014-11-02 12:54:31

标签: regex

在作者在电子书文件名中命名后,我一直试图写一个正则表达式来纠正错误的分隔符。在Javascript中使用File Renamer。

这是我到目前为止所做的:

DEMO HERE

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

每个文件名中的第一个分隔符应为" - "这些是我尝试纠正的类型:

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 - "然后按预览排序,看看在申请之前要做出哪些更改)

有没有办法阻止正则表达式匹配" - "什么之后,所以我可以预览变化? 感谢。

1 个答案:

答案 0 :(得分:1)

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

嗯,你可以通过使用否定前瞻来匹配字符串.开头的“任何字符”-来确保这种情况。具体而言,将(.*?)替换为((?! - ).)*?

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