.net 使用regex从webvtt中提取
我正在尝试构建一个在.Net环境中使用的正则表达式,它允许我从webvtt文件中提取信息 我想从下一行中提取时间码信息和相应的信息,这些信息可能是字幕,也可能是其他内容。 我遇到的问题是,下一行上的信息有时是一行,有时跨越多行,例如:.net 使用regex从webvtt中提取,.net,regex,webvtt,.net,Regex,Webvtt,我正在尝试构建一个在.Net环境中使用的正则表达式,它允许我从webvtt文件中提取信息 我想从下一行中提取时间码信息和相应的信息,这些信息可能是字幕,也可能是其他内容。 我遇到的问题是,下一行上的信息有时是一行,有时跨越多行,例如: 00:00:02.736 --> 00:00:06.072 line:79.33% position:10.00% align:start AND YOUR GRACE? 00:00:06.072 --> 00:00:08.875 line:
00:00:02.736 --> 00:00:06.072 line:79.33% position:10.00% align:start
AND YOUR GRACE?
00:00:06.072 --> 00:00:08.875 line:74.00% position:10.00% align:start
WHAT WILL YOU DO
ABOUT THAT?
我需要确保我得到了所有这些,而不会无意中进入下一组的开始
我试过这个:
\n(\d{2}:\d{2}:\d{2}.\d{3})(.|\n)*(?<!\d{2}:\d{2}:\d{2}.\d{3})
或
第二(或第三,取决于上述内容):
然后:
其次是:
WHAT WILL YOU DO
ABOUT THAT?
etc看来您可以使用
(?m)^(\d{2}:\d{2}:\d{2}\.\d+) +--> +(\d{2}:\d{2}:\d{2}\.\d+).*[\r\n]+\s*(?s)((?:(?!\r?\n\r?\n).)*)
见
详细信息
-多行模式打开(?m)
-行的开始(由于^
)(?m)
-第1组:时间戳模式(\d{2}:\d{2}:\d{2}\.\d+)
-1+空格,+-->+
,1+空格-->
-第2组:时间戳模式(\d{2}:\d{2}:\d{2}\.\d+)
-行的其余部分(*[\r\n]+\s*
),1+换行符(*
),然后0+空格([\r\n]+
)\s*
-从现在开始启用点调用((?s)
匹配换行符)
-第3组:任何未开始双线中断序列的字符,0+次((?:(?!\r?\n\r?\n)。*)
如果您是用C#编写代码,那么使用双换行符进行拆分怎么样
var res=str.Split(新[]{“\r\n\r\n”},StringSplitOptions.RemoveEmptyEntries)
?如果您无法访问代码,请尝试“谢谢”。这接近我想要实现的目标。但是,它正在用时间码捕获行的其余部分,例如“行:79.33%位置:10.00%对齐:开始”是否有办法忽略第二个时间码之后的行的其余部分,并从新行再次捕获?抱歉,我正在尝试看看是否可以采取不同的方法。我已经回复并更新了我的原始问题,比如?是的。我想这就是诀窍。谢谢
00:00:02.736 --> 00:00:06.072
AND YOUR GRACE?
00:00:06.072 --> 00:00:08.875
WHAT WILL YOU DO
ABOUT THAT?
(?m)^(\d{2}:\d{2}:\d{2}\.\d+) +--> +(\d{2}:\d{2}:\d{2}\.\d+).*[\r\n]+\s*(?s)((?:(?!\r?\n\r?\n).)*)