gpt4 book ai didi

java - 无法在 Java 中使用正则表达式匹配 Srt 字幕

转载 作者:行者123 更新时间:2023-12-01 04:25:33 25 4
gpt4 key购买 nike

尝试在这段代码中解析 srt 字幕:

public class MatchArray {

public static void main(String args[]) {

File file = new File(
"C:/Users/Thiago/workspace/SubRegex/src/Dirty Harry VOST - Clint Eastwood.srt");
{

try {
Scanner in = new Scanner(file);

try {
String contents = in.nextLine();

while (in.hasNextLine()) {
contents = contents + "\n" + in.nextLine();
}



String pattern = "([\\d]+)\r([\\d]{2}:[\\d]{2}:[\\d]{2}),([\\d]{3})[\\s]*-->[\\s]*([\\d]{2}:[\\d]{2}:[\\d]{2}),([\\d]{3})\r(([^|\r]+(\r|$))+)";


Pattern r = Pattern.compile(pattern);

// Now create matcher object.
Matcher m = r.matcher(contents);

ArrayList<String> start = new ArrayList<String>();
while (m.find()) {
start.add(m.group(1));
start.add(m.group(2));
start.add(m.group(3));
start.add(m.group(4));
start.add(m.group(5));
start.add(m.group(6));
start.add(m.group(7));


System.out.println(start);

}
}

finally {
in.close();

}
} catch (IOException e) {
e.printStackTrace();
}
}
}

但是当我执行它时,当尝试仅捕获具有此模式的时间时,它不会捕获任何组:

([\\d]{2}:[\\d]{2}:[\\d]{2}),([\\d]{3})[\\s]*-->[\\s]*([\\d]{2}:[\\d]{2}:[\\d]{2}),([\\d]{3})

它有效。那么如何让它捕获整个字幕呢?

最佳答案

我不太明白您的需求,但我认为这会有所帮助。请尝试正则表达式:

(\\d+?)\\s*(\\d+?:\\d+?:\\d+?,\\d+?)\\s+-->\\s+(\\d+?:\\d+?:\\d+?,\\d+?)\\s+(.+)

我在 http://www.myregextester.com/index.php 上试过了它起作用了。

希望这能有所帮助。

关于java - 无法在 Java 中使用正则表达式匹配 Srt 字幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18544704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com