字符串中所有连字符周围的空格,没有加倍

时间:2013-10-22 03:36:36

标签: regex

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

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文件名交换艺术家和标题:

     

Expression =(。) - (。)。mp3

     

新名称= $ 2 - $ 1.mp3

  

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

     

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

     

新名称=代码量子 - $ 1 $ 2 - $ 3.avi

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:2)

搜索:

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

替换:

$1 - $2

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

答案 2 :(得分:1)

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

  1. (?<=\S)-替换为“ - ”
  2. -(?=\S)替换为“ - ”
  3. JSBin:http://jsbin.com/UTUZADe/1/edit?js,console(我不得不为#1使用不同的方法,不幸的是JS不支持预见断言)