【问题标题】:remove every line that contains certain number after bar "|"删除条“|”之后包含特定数字的每一行
【发布时间】:2021-10-25 04:06:09
【问题描述】:

我的表格看起来像这样:

12345678|123|123|123|123|
12345678|12|123|123|123|
12345678|123|123|123|123|
12345678|12|123|123|123|

以必要的 8 个随机数字开头 | 后跟 2 个数字,有时是 3 个。

如何删除包含 8 个数字并后跟三个数字的每一行/整行。

得到最终结果:

12345678|12|123|123|123|
12345678|12|123|123|123|

【问题讨论】:

    标签: notepad++


    【解决方案1】:

    在 notepad++ 或任何高级文本编辑器中,您可以使用名为 regex 或正则表达式的东西

    Ctrl+H 打开替换菜单

    ^(?=[0-9]{0,9})........(?=[0-9]{3,3})*....(?=\|).*
    

    输入:

    12345678|123|123|123|123|
    12345678|12|123|123|123|
    12345678|123|123|123|123|
    12345678|12|123|123|123|
    

    输出:

    12345678|12|123|123|123|
    
    12345678|12|123|123|123|
    

    要删除换行符,您可以使用它

    /((\r\n|\n|\r)$)|(^(\r\n|\n|\r))|^\s*$/gm
    

    最终输出:

    12345678|12|123|123|123|
    12345678|12|123|123|123|
    

    【讨论】:

    • 为什么要分两次完成这项工作?对于第二个正则表达式,分隔符和标志是无用的。
    • 对不起,我不是正则表达式的人,我在第一个中尽力而为,第二个我从另一个线程复制
    【解决方案2】:
    • Ctrl+H
    • 查找内容:^\d{8}\|\d\d\d\|.+$\R?
    • 替换为:LEAVE EMPTY
    • 检查 环绕
    • CHECK 正则表达式
    • 取消选中 . matches newline
    • 全部替换

    说明:

    ^           # beginning of line
    \d{8}       # 8 digits
    \|          # a pipe
    \d\d\d      # 3 digits
    \|          # a pipe
    .+          # 1 or more any character but newline
    $           # end of line
    \R?         # any kind of linebreak, optional
    

    屏幕截图(之前):

    截图(之后):

    【讨论】:

    • 简单明了!添加条“|”会是什么每次在 8 个数字后出现 4 个字符 12345678|1234|123|123|123| 输出 12345678|12|34|123|123|123|
    • @Firsthen:查找:^\d{8}\|\d\d\K(?=\d\d\|)替换|
    • @Firsthen:查找:^\d{8}\|\d{3}\|\d\d\K(?=\d\d\|),但 cmets 不是提问的地方 :)
    • (删除了我的评论)非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-29
    • 2021-08-29
    • 2012-03-21
    相关资源
    最近更新 更多