【问题标题】:Regex: Remove a character before a plus character?正则表达式:删除加号之前的字符?
【发布时间】:2019-07-26 13:41:27
【问题描述】:

我正在使用 Notepad++,我正在寻找一个正则表达式,它可以删除出现在加号 + 之前但不是之后出现的竖线字符 | 的每一次出现。

一行示例:

290167 275b93| e4dcab59949+k70ba3f31cc63|4d4746bd758ff618afc82556

这需要:

290167 275b93 e4dcab59949+k70ba3f31cc63|4d4746bd758ff618afc82556

这是我试图隔离但没有结果的正则表达式:

[|](?<=[+])

(行包含空格字符)

【问题讨论】:

    标签: regex notepad++


    【解决方案1】:

    您在正确的轨道上,但您的查找模式略有偏差。试试这个版本:

    Find:    [|](?=.*[+])
    Replace: (empty string)
    

    这是一个工作演示:

    Demo

    你想要的逻辑是找到所有管道,只要有一个加号出现在字符串后面。积极的前瞻(?=.*[+]) 断言这一点。

    【讨论】:

      【解决方案2】:

      您需要提前查看在线其他地方的+(?&lt;= 是lookbehind,你不希望这样(lookahead 语法是(?=),并且不需要单个字符的字符集:

      \|(?=[^+\n]*\+)
      

      并用空字符串替换。

      https://regex101.com/r/MpuWfp/2

      【讨论】:

      • 谢谢,但是当我在记事本++中尝试时,它发现 |也在 + 字符之后。 (当有更多行时)
      • 在否定字符集中包含\n,这样前瞻就不会跨越换行符
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 2011-01-20
      • 1970-01-01
      • 1970-01-01
      • 2015-10-03
      相关资源
      最近更新 更多