【问题标题】:How to exclude first and second minus character from the right?如何从右边排除第一个和第二个减号?
【发布时间】:2020-11-18 00:24:34
【问题描述】:

我在上面有这个列表 我正在https://regex101.com/ 上使用正则表达式

BETA - Asia-926-5.6.6
BETA - Asia-926-5.5.7
BETA - AU-843-5.6.6
BETA - AU-843-5.5.7
BETA - East-Europe-500-5.6.6
BETA - East-Europe-500-5.5.7

我发现这个 REGEX [^0-9,.] 排除所有数字和点,但我不知道如何从右边排除第一个和第二个减号以获得这样的东西:

BETA - Asia
BETA - Asia
BETA - AU
BETA - AU
BETA - East-Europe
BETA - East-Europe

【问题讨论】:

  • 您可以匹配您要删除的-\d+-\d+(?:\.\d+)+$ 并替换为空字符串regex101.com/r/7IJuXb/1
  • 符合您的职位要求的更通用的解决方案是(?:-[^-]*){2}$,请参阅demo

标签: regex


【解决方案1】:

这是一个简单的正则表达式,用于删除破折号、后跟数字和所有剩余字符:

var strings = [
  'BETA - Asia-926-5.6.6',
  'BETA - Asia-926-5.5.7',
  'BETA - AU-843-5.6.6',
  'BETA - AU-843-5.5.7',
  'BETA - East-Europe-500-5.6.6',
  'BETA - East-Europe-500-5.5.7'
];
var regex = /\-[0-9].*$/;
strings.forEach(function(str) {
  var result = str.replace(regex, '')
  console.log(str + ' ==> ' + result);
});

输出:

BETA - Asia-926-5.6.6 ==> BETA - Asia
BETA - Asia-926-5.5.7 ==> BETA - Asia
BETA - AU-843-5.6.6 ==> BETA - AU
BETA - AU-843-5.5.7 ==> BETA - AU
BETA - East-Europe-500-5.6.6 ==> BETA - East-Europe
BETA - East-Europe-500-5.5.7 ==> BETA - East-Europe

正则表达式的解释:

  • \- - 文字破折号
  • [0-9] - 一个数字
  • .*$ - 一切都结束了

替换部分是空的,因此它将删除匹配项。

【讨论】:

    【解决方案2】:

    您可以匹配所有以最后一个连字符开头的文本

    (?:-[^-]*){2}$
    

    regex demo

    详情

    • (?:-[^-]*){2} - 出现两次 ({2})
      • - - 一个连字符
      • [^-]* - 除- 之外的 0 个或多个字符
    • $ - 字符串结束。

    【讨论】:

      【解决方案3】:

      您可以匹配最后 2 个连字符和数字的模式,并将匹配替换为空字符串。

      -\d+-\d+(?:\.\d+)+$
      
      • -\d+- 匹配 -,1+ 位和 -
      • \d+ 匹配 1+ 位
      • (?:\.\d+)+ 匹配 1+ 次一个点和 1+ 个数字
      • $ 字符串结束。

      Regex demo

      输出

      BETA - Asia
      BETA - Asia
      BETA - AU
      BETA - AU
      BETA - East-Europe
      BETA - East-Europe
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多