Regex 正则表达式从捕获组/解决方案中删除字符

Regex 正则表达式从捕获组/解决方案中删除字符,regex,Regex,假设我有一个如下的字符串 @ABCD|NN12CT55|GFR 现在我想比赛 @ABCD|N 并将其替换为 @ABCD N 用于匹配的正则表达式 @ABCD\|[^G] 有没有办法将|从捕获组中移除 你可以试试这个正则表达式 ^@[^|]*\K\| 并替换为: " " 说明: ^标记字符串的开头 @匹配@符号 [^ |]*匹配任何内容,但不匹配管道| \K如果在上一点上找到匹配项,则\K将生成 当前位置作为起点,因此前一部分不会 被取代 \\\124;与管道匹配-->此管道将被更换 你可以试

假设我有一个如下的字符串

@ABCD|NN12CT55|GFR

现在我想比赛

@ABCD|N

并将其替换为

@ABCD N

用于匹配的正则表达式
@ABCD\|[^G]

有没有办法将|从捕获组中移除

你可以试试这个正则表达式

^@[^|]*\K\|
并替换为:

" "
说明:

  • ^
    标记字符串的开头
  • @
    匹配@符号
  • [^ |]*
    匹配任何内容,但不匹配管道|
  • \K
    如果在上一点上找到匹配项,则\K将生成 当前位置作为起点,因此前一部分不会 被取代
  • \\\124;
    与管道匹配-->此管道将被更换
  • 你可以试试这个正则表达式

    ^@[^|]*\K\|
    
    并替换为:

    " "
    
    说明:

  • ^
    标记字符串的开头
  • @
    匹配@符号
  • [^ |]*
    匹配任何内容,但不匹配管道|
  • \K
    如果在上一点上找到匹配项,则\K将生成 当前位置作为起点,因此前一部分不会 被取代
  • \\\124;
    与管道匹配-->此管道将被更换

  • @(TEST)\\1
    替换为
    @\1\1
    @AvinashRaj它适用于给定的示例,但我似乎无法将其适应我的需要。你能给我一个解决办法吗<代码>@ABCD | NN12CT55 | GFR已输入。也许有一点解释它的作用?请更新问题,以显示现实生活中的情况,并解释你的正则表达式有什么问题。您的正则表达式中甚至没有捕获组,为什么要问如何从捕获组中删除字符?也许,您需要使用一个。比如说。或者。@WiktorStribiżew我知道我可以用$0替换,它与正则表达式匹配的精确值相匹配,但我不想用
    @(TEST)\\1
    替换
    @\1\1
    @AvinashRaj它适用于给定的示例,但我似乎无法根据我的需要调整它。你能给我一个解决办法吗<代码>@ABCD | NN12CT55 | GFR已输入。也许有一点解释它的作用?请更新问题,以显示现实生活中的情况,并解释你的正则表达式有什么问题。您的正则表达式中甚至没有捕获组,为什么要问如何从捕获组中删除字符?也许,您需要使用一个。比如说。或者。@WiktorStribiżew我知道我可以用$0重新替换,它与正则表达式匹配的精确值相匹配,但我不希望| in itso\K总是设置新的“开始”如果它找到的东西不是
    |
    ,并且一旦出现|,它就停止重置开始?\K会忘记过去的匹配,并将当前位置标记为匹配。。。因为到目前为止,一切都是为了找到一切,而不是|,所以我们需要忘记所有不需要替换的东西\K是这样做的。从那里开始,下一个字符是|因此它被匹配。所有匹配的东西都将被“即空空间”所取代,为什么它只匹配第一个管道?这是因为
    ^
    ?让我们先忘记\K,^[^ |]*意味着从初始点匹配所有不是管道的东西,所以它将匹配所有东西,直到|,正如我们所知,因此我立即放置一个管道进行匹配,它得到匹配。。。我完全不在乎匹配之后会发生什么,甚至不匹配任何东西。我如何将它与正则表达式的JavaScript API结合使用?我看过你的演示,它工作了,但是当我使用JavaScript时,它总是返回null!例如:var word='@ABCD | NN12CT55 | GFR';让matchresult=word.match(/^@[^|]*\K\|/gm);日志(匹配结果)我尝试了exec、match等。。。但是没用!因此\K如果找到了不属于
    |
    的内容,则始终设置匹配的新“开始”,并且一旦发生,它将停止重置开始?\K忘记过去的匹配,并将当前位置标记为匹配。。。因为到目前为止,一切都是为了找到一切,而不是|,所以我们需要忘记所有不需要替换的东西\K是这样做的。从那里开始,下一个字符是|因此它被匹配。所有匹配的东西都将被“”替换,即空的空格,为什么它只匹配第一个管道?这是因为
    ^
    ?让我们先忘记\K,^[^ |]*意味着从初始点匹配所有不是管道的东西,所以它将匹配所有东西,直到|,正如我们所知,因此我立即放置一个管道进行匹配,它得到匹配。。。我完全不在乎匹配之后会发生什么,甚至不匹配任何东西。我如何将它与正则表达式的JavaScript API结合使用?我看过你的演示,它工作了,但是当我使用JavaScript时,它总是返回null!例如:var word='@ABCD | NN12CT55 | GFR';让matchresult=word.match(/^@[^|]*\K\|/gm);日志(匹配结果)我尝试了exec、match等。。。但是没用!