【问题标题】:regex for subtitles正则表达式的字幕
【发布时间】:2015-10-05 20:53:51
【问题描述】:

我需要解析一些 srt 文件,并且我正在寻找与时间部分匹配的正则表达式(用于 JAVA)。我想要的是逐行读取文件,如果这些行是数字或时间部分,则跳过它们。

示例,给定:

1
00:00:01,357 --> 00:00:03,323
You took this case
without running it by me.

2
00:00:03,359 --> 00:00:04,825
- Jessica--
- That's enough. Dump it.

我想匹配线条

00:00:03,359 --> 00:00:04,825

2

提前致谢!

【问题讨论】:

  • 你只想匹配 2 ??
  • 你说的2是什么意思?出现次数?
  • 我刚刚更新了答案
  • @WashingtonGuedes 2 是为了解释我想同时匹配数字和时间

标签: java regex srt


【解决方案1】:

比赛号码:

^\d+$

比赛时间

^\d{2}:\d{2}:\d{2},\d{3}.*\d{2}:\d{2}:\d{2},\d{ 3}$

两种情况

(^\d+$)|(^\d{2}:\d{2}:\d{2},\d{3}.*\d{2}:\d{2}:\ d{2},\d{3}$)

正如我在您的格式中看到的,数字在时间之前,因此您只需要使用匹配时间来获取行索引并按 index-1 和索引删除


更清楚正则表达式时间

^\d{2}:\d{2}:\d{2},\d{3}.*\d{2}:\d{2}:\d{2},\d{ 3}$

开始

^

从正文开始

\d{2} 或 [0-9]{2}

只有两位数

: 或 :{1} 或 [:]{1}

一个逗号:仅 ...

或 ,{1} 或 [,]{1}

一个逗号,只有一个

\d{3} 或 [0-9]{3}

只有三位数

.*

任何东西,有没有价值都可以

过去:再次检查时间格式

$

正文结束

这意味着该文本的从头到尾必须匹配该条件

【讨论】:

  • 删除 {1} 量词,它们是多余的。由于Java中的\d匹配[0-9],所以可以将正则表达式的时间缩短为^\d{2}:\d{2}:\d{2},\d{3}.*\d{2}:\d{2}:\d{2},\d{3}$
  • 至于^([0-9]+)|([0-9]{2}[:]{1}[0-9]{2}[:]{1}[0-9]{2}[,]{1}[0-9]{3}.*[0-9]{2}[:]{1}[0-9]{2}[:]{1}[0-9]{2}[,]{1}[0-9]{3})$,正则表达式是错误的,因为它会尝试第一个分支并且只抓取时间戳中的小时。
  • 感谢第一条评论(+1),第二条评论我不懂,因为我英文不好,但我试了一下,它跑了。
  • 它之所以有效,是因为您只是按照我的评论修复了它。在上一个版本中,您没有在第一个版本中指定 $。
  • 哦,是的,对不起我的错误,我测试了它并看到了。非常感谢
【解决方案2】:

对于第一行 00:00:03,359 --> 00:00:04,82500:00:01,357 --> 00:00:03,323 以下代码可能有用。

String strLine = "00:00:01,357 --> 00:00:03,323";
System.out.println(strLine.matches("\\d\\d:\\d\\d:\\d\\d,\\d\\d\\d --> \\d\\d:\\d\\d:\\d\\d,\\d\\d\\d"));

【讨论】:

    【解决方案3】:

    您可以这样做来获取每个字幕的结束时间:

    \d{2}:\d{2}:\d{2},\d{3}$
    

    Regex live here.

    解释:

    \d{2}:      # a two-digits number followed by a ":" character
    \d{2}:      # ""
    \d{2},      # a two-digits number followed by a "," character
    \d{3}       # a three-digits number
    $           # matching only at ending lines 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多