【问题标题】:notepad++ deleting all text except what matches regex记事本++删除除了匹配正则表达式的所有文本
【发布时间】:2014-06-05 03:21:04
【问题描述】:

我有一个包含录音信息的文本文件,包括曲目编号和名称,我想删除除曲目编号和曲目名称之外的所有其他文本。例如文本文件如下所示:

text text text text
text text text text text text text text
text text text text text text text text text text text text
text text text text
text text text text text text text text
text text text text 
text text text text text text text text text text text text text text text text 
text text text text text text text text 
text text text text 

d1t01 - trackname

d1t02 - trackname

d1t03 - trackname

d1t04 - trackname

d1t05 - trackname

d1t06 - trackname

d1t07 - trackname

d1t08 - trackname

d1t09 - trackname

d1t10 - trackname

d1t11 - trackname

text text text text
text text text text text text text text
text text text text text text text text text text text text
text text text text
text text text text text text text text
text text text text 
text text text text text text text text text text text text text text text text 
text text text text text text text text 
text text text text 

我只想留下这个:

d1t01 - trackname

d1t02 - trackname

d1t03 - trackname

d1t04 - trackname

d1t05 - trackname

d1t06 - trackname

d1t07 - trackname

d1t08 - trackname

d1t09 - trackname

d1t10 - trackname

d1t11 - trackname

我想出了如何用这个正则表达式匹配行的开头:

d[0-9]+t[0-9]+[0-9]+ -

但我不知道如何删除其余的“文本”,只留下这些行。我还需要它来删除“返回”,而不是在文本文件中留下任何空白行。

谢谢!

【问题讨论】:

    标签: regex notepad++


    【解决方案1】:

    编辑:您应该可以在此处使用以下内容。

    Find: ^(?!d\w+).*\r?\n?
    Replace:   
    

    正则表达式:

    ^              the beginning of the string
    (?!            look ahead to see if there is not:
      d              'd'
      \w+            word characters (a-z, A-Z, 0-9, _) (1 or more times)
    )              end of look-ahead
    .*             any character except \n (0 or more times)
    \r?            '\r' (carriage return) (optional)
    \n?            '\n' (newline) (optional)
    

    【讨论】:

      【解决方案2】:

      第 1 步 - 匹配线。查找对话框 > 标记选项卡,您可以为匹配的行添加书签。

      第 2 步 - 删除已添加书签的行或删除未添加书签的行。搜索 > 书签 > 删除未标记的行或删除已添加书签的行

      【讨论】:

      • 不使用正则表达式,而是一种非常简单的解决问题的方法。
      【解决方案3】:

      hwnd 的答案很接近,但它不会删除所有新行。您说您根本不希望文件中有任何空行,所以这将是一个更完整的解决方案:

      查找:^(?!d[0-9]+t[0-9]+).*\r?\n?

      替换

      在这种情况下,您的初始正文将被替换为

      d1t01 - trackname
      d1t02 - trackname
      d1t03 - trackname
      d1t04 - trackname
      d1t05 - trackname
      d1t06 - trackname
      d1t07 - trackname
      d1t08 - trackname
      d1t09 - trackname
      d1t10 - trackname
      d1t11 - trackname
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-02
        • 2012-08-26
        • 1970-01-01
        相关资源
        最近更新 更多