Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式要匹配所有的";-&引用;除第一个和最后一个之外的文件名中的删除器?_Regex - Fatal编程技术网

Regex 正则表达式要匹配所有的";-&引用;除第一个和最后一个之外的文件名中的删除器?

Regex 正则表达式要匹配所有的";-&引用;除第一个和最后一个之外的文件名中的删除器?,regex,Regex,我一直尝试编写一个正则表达式来匹配文件名中除“第一个”和“最后一个”之外的所有“-”分隔符,这样我就可以将中间的所有数据组合成一个组,例如一个文件名: Ann M Martin - Baby sitters Club - Baby sitters Little Sister - Super Special 04 - Karen, Hannie and Nancy - The Three Musketeers.doc 必须成为: Ann M Martin - Baby sitters Club-

我一直尝试编写一个正则表达式来匹配文件名中除“第一个”和“最后一个”之外的所有“-”分隔符,这样我就可以将中间的所有数据组合成一个组,例如一个文件名:

Ann M Martin - Baby sitters Club - Baby sitters Little Sister - Super Special 04 - Karen, Hannie and Nancy - The Three Musketeers.doc
必须成为:

Ann M Martin - Baby sitters Club- Baby sitters Little Sister- Super Special 04- Karen, Hannie and Nancy - The Three Musketeers.doc
所以基本上我想用“-”来代替“-”,但不是第一次或最后一次。文件名可以有1到6个“-”删除器,但应仅影响具有3、4、5或6个“-”删除器的文件名

它用于文件重命名器。味道是JavaScript。谢谢。

两个选项:

1-您需要通过使用遍历匹配来进行一些自己的处理

( - )
以及构建一个新字符串(请参见关于获取匹配索引)

您必须检查匹配计数是否大于2,并跳过第一个和最后一个匹配

2-使用

.+ - ((?:.+ - )+).+ - .+
要获取要修改的字符串部分,然后在破折号上进行替换,然后构建字符串(再次使用上述正则表达式中的索引)。

您不能使用正则表达式吗?如果是:

var s = "Ann M Martin - Baby sitters Club - Baby sitters Little Sister - Super Special 04 - Karen, Hannie and Nancy - The Three Musketeers.doc";
var p = s.split(' - ');
var r = ''; // result output
var i = 0;
p.forEach(function(e){
  switch(i) {
    case 0: r += e; break;
    case 1: case p.length - 1: r += ' - ' + e; break;
    default: r += '- ' + e;
  }
  i++;
});
console.log(r);


这是假设分隔符总是
-
(1个空格,1个破折号,1个空格)。如果没有,您只需要在
-
上拆分,然后在重建之前修剪每个令牌。

谢谢您的建议


它将第一个和最后一个“-”替换为“!”,这样我就可以简单地查找所有剩余的“-”并将其替换为“-”,然后将所有的“!”改回“-”

除味器
我会被取消除味器不是一个词。
s=Ann M Martin - Baby sitters Club - Baby sitters Little Sister - Super Special 04 - Karen, Hannie and Nancy - The Three Musketeers.doc
r=Ann M Martin - Baby sitters Club- Baby sitters Little Sister- Super Special 04- Karen, Hannie and Nancy - The Three Musketeers.doc