3

我正在使用一个正则表达式,它在字符串中的每个“-”周围放置空格,例如。

02 jaguar-leopard, tiger-panther 08

会成为

02 jaguar - leopard, tiger - panther 08

请注意,如果“-”周围已经有空格,则无需进行任何更改,例如。

02 jaguar - leopard, tiger - panther 08

不应该成为

02 jaguar  -  leopard, tiger  -  panther 08

连字符的数量事先是未知的。

感谢您的任何想法...

编辑:我实际上并没有为此使用语言。我正在使用Ant Renamer(一个海量文件重命名实用程序)。重命名器 GUI 中有两个字段“表达式”和“新名称”来提供输入。这是来自帮助文件的示例:

从 mp3 文件名交换艺术家和标题:

表达式 = (. ) - (. ).mp3

新名称 = $2 - $1.mp3

从剧集编号为 SnnEmm 后跟标题的系列视频文件中提取集编号和标题:

表达式 = Code.Quantum.S([0-9]{2})E([0-9]{2}).(.*).FRENCH.XViD.avi

新名称 = Code Quantum - $1$2 - $3.avi

4

3 回答 3

4

替换_*-_*_-_(在使用模式之前将下划线替换为空格)。

这样,连字符周围的任何现有空格都将被新插入的空格替换。

于 2013-10-22T04:57:59.123 回答
2

搜索:

(?:(\S)| )-(?:(\S)| )

代替:

$1 - $2

请注意,您的工具可能使用反斜杠作为反向引用,它可能需要\1 - \2

于 2013-10-22T04:01:44.440 回答
1

您很可能需要两个表达式来完成此任务。

  1. 替换(?<=\S)-为“-”
  2. 替换-(?=\S)为“-”

JSBin: http: //jsbin.com/UTUZADe/1/edit ?js,console (我不得不对#1使用不同的方法,不幸的是JS不支持前瞻断言)

于 2013-10-22T04:00:27.620 回答