【问题标题】:Delete all lines that do NOT start with letters or punctuation marks删除所有不以字母或标点符号开头的行
【发布时间】:2015-08-23 19:12:41
【问题描述】:

我有一个很长的文本文件,格式如下:

1
00:00:00,000 --> 00:00:16,700
to use 2 languages.

2
00:00:16,700 --> 00:00:19,600
I was saying that we are going to use 2 languages

3
00:00:19,600 --> 00:00:24,700
...I myself will continue to speak because of time

现在我想删除除文本之外的所有内容,所以结果应该是:

to use 2 languages.
I was saying that we are going to use 2 languages
...I myself will continue to speak because of time

什么是正确的正则表达式命令?删除所有包含数字的行的命令也可以工作。我正在使用 Sublime Text 或 regex101.com

【问题讨论】:

  • 是的,这也足以解决问题!

标签: regex replace sublimetext3


【解决方案1】:
/(?:^|\n)\d+\n[\d\:\,\s\->]+/g

这似乎是一个非常好的正则表达式。将其替换为 \n,您将只剩下单词。

Demo.

【讨论】:

    【解决方案2】:

    这两种方式都需要多行不区分大小写模式。
    它们在正则表达式中内联,但可以指定为查找选项之一。

    替换是一个空字符串。

    对于标点符号,这使用属性:

     # (?im)(?:^[^\p{punct}a-z].*\s*)+
    
     (?im)
     (?:
          ^ 
          [^\p{punct}a-z] 
          .* 
          \s* 
     )+
    

    这个使用POSIX:

     # (?im)(?:^[^[:punct:]a-z].*\s*)+
    
     (?im)
     (?:
          ^ 
          [^[:punct:]a-z] 
          .* 
          \s* 
     )+
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-16
      • 2015-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多