Gruppe 2, 3, 4 und 5 ist die Startzeit
Gruppe 6, 7, 8 und 9 fertig Zeit
Gruppe 11 ist die zugehörige Untertitel-Textdatei
Danke! Können Sie erklären, was ist das: "(X1:\\d.*?)??" für?
Auch gibt es Fehler - "\\n" statt "\\\n". Und es ist noch besser, ersetzen Sie diese mit "\\r?\\n" (Arbeit sowohl auf Windows-und Unix) wie bereits erläutert, hier
Wo hast du das "\\n" - Muster? Nun, über die \r Charakter, ich würde sagen, dass Sie Recht haben, aber aus einem Grund den ich nicht erklären kann jetzt, auch wenn es \r-Zeichen in der Datei, diese Muster erfolgreich Spiele und produziert die richtigen Ergebnisse!
Die ich produziert habe ein java-Logik, mit der das Parsen und Lesen verschiedene Untertitel-Formate, unter Ihnen die beliebten srt: finden Sie den code, lizensiert unter der MIT-open-source-Lizenz (frei für was auch immer) in meinem GiT-repository:
Werden Sie wahrscheinlich brauchen nur die grundlegenden Klassen und die SRTFormat Klasse, und mit, dass Sie Lesen können srt-Dateien aus einem InputStream oder bekommen den vollen String[] Dateien, sobald Sie fertig sind Bearbeiten.
Wenn Sie diese nützlich finden, oder ich kann Ihnen helfen, mit alles, bitte Kontaktieren Sie mich.
PS: (andere Formate, die entweder teilweise oder vollständig sind .ASS .SSA .STL .SCC und .XML (vom W3C TTAF-DFXP auch bekannt als TTML 1.0)
Muss verbessert werden. Leere Klasse (z.B. Region) und Fang NullPointerExceptions riechen nicht mehr gut.
Region ist Zukunft-Funktionalität (das ist, warum die leer ist), bei anderen Formaten (um die Untertitel irgendwo auf dem Bildschirm), der SRT nicht anbieten, layout von jeglicher Art. NullPointerException auftreten könnten, auf seltsame Fälle, bisher sind die meisten korrigiert wurden erst auf null prüfen oder initialisieren Sie die variable mit der Größe 0. Aber du hast Recht, einige brechenden wäre schön... immer Noch für die SRT funktioniert sehr gut.
Ersetzen ([^\\|]*?) mit einem beliebigen Zeichen, die weniger Wahrscheinlichkeit zu kommen, wie die Untertitel-text. Ich habe derzeit verwendeten Zeichen "|" negation Regel.
Verwenden ((.|\\n)*?) statt ([^\\|]*?) so es gibt keine Ausnahmen.
Den eigentlichen SRT-Analyse wird durchgeführt durch reguläre Ausdrücke, die Java in der Lage ist, zu manipulieren.
Den tatsächlichen regexp ist:
Gruppe 2, 3, 4 und 5 ist die Startzeit
Gruppe 6, 7, 8 und 9 fertig Zeit
Gruppe 11 ist die zugehörige Untertitel-Textdatei
Die ich produziert habe ein java-Logik, mit der das Parsen und Lesen verschiedene Untertitel-Formate, unter Ihnen die beliebten srt: finden Sie den code, lizensiert unter der MIT-open-source-Lizenz (frei für was auch immer) in meinem GiT-repository:
https://github.com/JDaren/subtitleConverter
Werden Sie wahrscheinlich brauchen nur die grundlegenden Klassen und die SRTFormat Klasse, und mit, dass Sie Lesen können srt-Dateien aus einem InputStream oder bekommen den vollen String[] Dateien, sobald Sie fertig sind Bearbeiten.
Wenn Sie diese nützlich finden, oder ich kann Ihnen helfen, mit alles, bitte Kontaktieren Sie mich.
PS: (andere Formate, die entweder teilweise oder vollständig sind .ASS .SSA .STL .SCC und .XML (vom W3C TTAF-DFXP auch bekannt als TTML 1.0)
EDIT:
finden Sie die Logik bei der Arbeit in http://www.subtitleconverter.net
Region
) und FangNullPointerException
s riechen nicht mehr gut.Eigentlich die geänderte regex aus
@Panayotis
unterstützt multi-line-Untertitel-text ist wie folgt:Ersetzen
([^\\|]*?)
mit einem beliebigen Zeichen, die weniger Wahrscheinlichkeit zu kommen, wie die Untertitel-text. Ich habe derzeit verwendeten Zeichen "|" negation Regel.((.|\\n)*?)
statt([^\\|]*?)
so es gibt keine Ausnahmen.Gibt es ein weiteres basic (und open source) - API, die mit SRT und ASS Untertitel hier
Analyse SRT :