【问题标题】:Remove text before = character in notepad++在记事本++中删除=字符之前的文本
【发布时间】:2017-01-21 23:58:45
【问题描述】:

首先文本看起来像这样:

Ab Yz=15,Cd Wx=2,Ef Tu=20,...

我用\r\n替换了所有,,所以文字看起来像这样:

Ab Yz=15
Cd Wx=2
Ef Tu=20

我只想要= 之后的数字并将^.+[=] 替换为“空白”,我的结果只是20
Notepad++ 是否认为整个文档只有一行并取最后一个 = 并删除之前的所有内容?
我怎样才能解决这个问题?哦,我怎样才能删除= 之后的文字? (包括=)

编辑:我也尝试了^.+[\=]^.+(=)^.+(\=),但得到了相同的结果。

【问题讨论】:

  • 取消选中. matches newline选项
  • @revo yepp 成功了,谢谢!
  • @revo 你愿意回答这个问题,我可以接受吗?否则我想会有更多的答案出现。
  • @Selphiron 您应该将该详细信息添加到问题中(您拥有 . 匹配换行符 选项的问题)。也许,添加带有设置的屏幕截图。

标签: regex text replace notepad++


【解决方案1】:

我猜你无意中检查了 。匹配换行符 选项,它使正则表达式中的. 超出一行 - 它也将匹配换行符(AKA DOTALL 修饰符)。所以你应该取消选中它。

此外,无需分两步完成这项工作。使用正则表达式[^=]+=(\d+),? 并替换为\1\n

这将变成这样一个输入字符串:

Ab Yz=15,Cd Wx=2,Ef Tu=20,Ef Tu=20,Ef Tu=20,Ef Tu=20,Ab Yz=15,Cd Wx=2,Ef Tu=20,Ef Tu=20,

收件人:

15
2
20
20
20
20
15
2
20
20

【讨论】:

    【解决方案2】:

    替换窗口左下角使用正则表达式,找到([A-Z]+) ([A-Z]+)=用空字符串替换。

    更多信息here

    【讨论】:

    • 感谢您的努力,但我已经得到了这部分 :) 我想得到=之后的数字
    • 我猜咖啡喝多了 :)
    • @Selphiron 嘿!你试过我的全新答案吗? :)
    【解决方案3】:

    要一次性更改所有内容,您可以这样做:

    • 查找内容:(?:^|,)[^=]+=([^,]+)(?:,|$)
    • 替换为:$1\r\n
    • 全部替换

    【讨论】:

    • 除非您将非捕获组更改为正向前瞻并用$1\n 替换替换字符串,否则它无法正常工作。
    • @revo:我错过了换行符,但不需要前瞻。
    • @revo:你在 Npp 中试过了吗?
    • 记事本Replace All功能似乎不是真正的Replace All,而是一个普通的单个Replace功能,陷入循环。这就是它起作用的原因。通常不应该。
    • @revo:是的,你是对的。但这对 OP 有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 2014-06-19
    • 2013-10-02
    • 1970-01-01
    • 2016-03-08
    相关资源
    最近更新 更多