2016-11-06 2 views
1

J'ai un fichier sous-titre d'un film, comme ci-dessous:Regex ajouter un tag aux sous-titres

2 
00:00:44,687 --> 00:00:46,513 
Let's begin. 

3 
00:01:01,115 --> 00:01:02,975 
Very good. 

4 
00:01:05,965 --> 00:01:08,110 
What was your wife's name? 

5 
00:01:08,943 --> 00:01:12,366 
- Mary. 
- Mary, alright. 

6 
00:01:15,665 --> 00:01:18,938 
He seeks the spirit 
of Mary Browning. 

7 
00:01:20,446 --> 00:01:24,665 
Mary, we invite you 
into our circle. 

8 
00:01:28,776 --> 00:01:32,834 
Mary Browning, 
we invite you into our circle. 
.... 

Maintenant, je veux correspondre uniquement le contenu du texte des sous-titres réels comme,

- Mary. 
- Mary, alright. 

Ou

He seeks the spirit 
of Mary Browning. 

y compris les caractères spéciaux, les chiffres et/ou les caractères de nouvelle ligne qu'ils peuvent contenir. Mais je ne veux pas faire correspondre la chaîne de temps et les numéros de série. Donc, fondamentalement, je veux faire correspondre toutes les lignes qui contiennent des chiffres et des caractères spéciaux uniquement avec des alphabets, pas des chiffres et des caractères spéciaux qui sont seuls sur d'autres lignes comme les chaînes de temps et les numéros de série.

Comment puis-je faire correspondre et ajouter l'étiquette <font color="#FFFF00">[subtitle text any...]</font> à chaque sous-titre que j'ai associé à l'aide de Regex?

Des moyens comme ci-dessous:

<font color="#FFFF00">He seeks the spirit 
of Mary Browning.</font> 
+0

Quelle langue utilisez-vous? – Jim

+0

Aucune langue n'est juste une syntaxe de sous-titre, juste des fichiers .srt normaux et un éditeur Geany. –

+0

La langue dans laquelle vous codez ... C#, php, javascript, ... quelle saveur de regex doit être utilisée? – Jim

Répondre

0

Eh bien, je viens de comprendre en vérifiant et analysant soigneusement la clé pour répondre à toutes les lignes de texte de sous-titres.

Tout d'abord à partir de n'importe quel fichier de sous-titre (.srt) Je dois supprimer les caractères inutiles de "saut de ligne", c'est-à-dire \r.

Find: \r+ 
Replace with: 

(rien-à-dire le caractère nul)

Je viens de faire correspondre ces lignes ne commençant pas par les chiffres & sauts de ligne (c.-à-lignes vides) à tous, puis les remplacer par leur propre texte enroulé autour de <font> étiquette avec des valeurs de couleurs comme ci-dessous:

Find: ^([^\d^\n].*) 
Replace with: <font color="#FFFF00">\1</font> 

(l'espace après le côlon est juste pour une meilleure présentation et n'est pas inclus dans le code).

Espérons que cela aidera tout le monde à frapper la tête avec des sous-titres tous les jours.