正则表达式改变文件名分隔符

时间:2014-10-01 21:19:30

标签: regex

我是正则表达式的新手,我现在可以编写表达式来完成大多数简单的文件重命名工作,但这个让我感到困惑。

我只是想把一堆文件名中的deliminator从“ - ”更改为“ - ”,例如:

"Author Name -Series 00 -Title.txt"  needs to become:
"Author Name - Series 00 - Title.txt"

"Author_Name -[Series 01] -Title -Genre.txt"  needs to become:
"Author_Name - [Series 01] - Title - Genre.txt"

表达式需要能够处理1,2或3“ - ”分隔符,并且必须忽略所有其他连字符,例如“ - ”“ - ”和现有的“ - ”都应该被忽略。例如:

"File_Name1 - Sometext- more-info (V1.0).txt" Should not be changed at all.

它可以在File Renamer中使用,它位于Python中。

1 个答案:

答案 0 :(得分:0)

您可以使用positive look-ahead,使用以下模式进行搜索,然后使用正确的字符替换它。 在模式的开头有一个空格。您还可以使用空白区域选择器\s

 -(?=[^ ])

或使用空格字符\s

\s-(?=[^ ])

以下是在JavaScript中测试模式的示例:



// expected:

// "Author Name -Series 00 -Title.txt" ->
// "Author Name - Series 00 - Title.txt"

// "Author_Name -[Series 01] -Title -Genre.txt" ->
// "Author_Name - [Series 01] - Title - Genre.txt"

// "File_Name1 - Sometext- more-info (V1.0).txt" -> 
// no change

var regex = / -(?=[^ ])/g;
var texts = [
  "Author Name -Series 00 -Title.txt",
  "Author_Name -[Series 01] -Title -Genre.txt",
  "File_Name1 - Sometext- more-info (V1.0).txt"
];

for(var i = 0; i < texts.length; i++) {
  var text = texts[i];
  console.log(text, "->", text.replace(regex, ' - '));
}
&#13;
&#13;
&#13;