Substituir com expressão regular
Ou cole o texto da legenda
Opções
Uma expressão regular, comparada com o texto de cada bloco. Cada ocorrência é substituída. As duas páginas desta seção compartilham a caixa: uma a abre vazia para um padrão que você já tem, a outra começa com um padrão que você pode editar dos dois jeitos.
No que cada ocorrência se transforma. Deixe vazio para apagar cada ocorrência. Ao contrário da página de localizar e substituir literal, aqui o cifrão é especial: $1 representa o primeiro grupo entre parênteses da ocorrência, $& a ocorrência inteira e $$ um cifrão literal.
As letras com que o padrão é compilado. g e u vêm ativados por padrão: u faz o padrão ler o texto caractere a caractere em vez de unidade de código a unidade de código, que é o que faz \p{L} e companhia significarem o que dizem. Acrescente i para ignorar maiúsculas e minúsculas, m para âncoras de linha, s para permitir que um ponto corresponda a uma quebra de linha. Esvazie a caixa para compilar sem sinalizador algum. Qualquer outra letra é recusada em vez de ignorada, porque um padrão executado com sinalizadores que você não pediu é um padrão que silenciosamente significa outra coisa.
A taxa de quadros em que os tempos são contados. Nas páginas de formato é o que o MicroDVD precisa, porque ele guarda os tempos como números de quadro. Nas páginas de taxa de quadros é a taxa com que o arquivo foi cronometrado — a versão para a qual as legendas foram feitas — e a segunda caixa da página recebe a taxa do vídeo com que você vai usá-las. 23,976, 24, 25, 29,97, 30, 50, 59,94 e 60 são as comuns. Errar isso desloca toda a linha do tempo e, nas páginas de taxa de quadros, desloca por uma proporção em vez de por uma quantidade fixa.
Preencha Padrão para executar.
Esta página reescreve o texto dentro dos blocos de legenda com um padrão que você escreve. Um padrão não é uma string fixa: `\d+` significa qualquer sequência de dígitos, `(cat|dog)` significa qualquer uma das duas palavras, e um ponto representa qualquer caractere. Toda ocorrência, em todo bloco, é substituída em uma única passagem, e a página informa quantos lugares mudaram. Só o texto se move — cada tempo de início e fim é transportado exatamente como estava.
A caixa de substituição também não é uma string fixa. Um cifrão nela é especial: `$1` representa o que o primeiro grupo entre parênteses da ocorrência capturou, `$&` representa a ocorrência inteira e `$$` representa um cifrão literal. É isso que permite a uma única regra arrumar milhares de linhas diferentes — apagar o espaço perdido antes de um ponto final mantendo a pontuação, porque a pontuação é o que o grupo capturou.
Os padrões rodam com `g` e `u` ligados. `g` significa encontrar todas as ocorrências, não só a primeira; `u` faz o padrão ler o texto caractere a caractere em vez de unidade de código a unidade de código, e é isso que faz `\p{L}` significar uma letra. Acrescente `i` para ignorar maiúsculas, `m` para permitir que âncoras funcionem linha a linha e `s` para permitir que um ponto corresponda a uma quebra de linha. Esvazie a caixa de flags para rodar sem nenhuma delas. Qualquer outra letra recusa a execução inteira em vez de ser ignorada, porque um padrão rodando com flags que você não pediu é um padrão que significa outra coisa em silêncio.
O estilo embutido é levado junto sempre que há um lugar honesto para ele ficar: uma marcação se desloca quando a edição acontece fora dela e se estica quando a edição acontece dentro dela. Quando uma ocorrência cruza a borda de uma marcação, o estilo é descartado e contado no relatório de perdas, porque a alternativa é itálico em volta das palavras erradas. Nada é enviado, cada arquivo é gravado de volta no próprio formato, e uma temporada inteira pode passar pela fila de uma vez.
Exemplos
Manter a pontuação com um grupo de captura
Entrada
1
00:00:01,000 --> 00:00:02,000
We stopped , and waited .
2
00:00:03,000 --> 00:00:04,000
Right !
Saída
1
00:00:01,000 --> 00:00:02,000
We stopped, and waited.
2
00:00:03,000 --> 00:00:04,000
Right!
O padrão é uma sequência de espaços seguida de um entre . , ! ? — e os parênteses fazem dessa pontuação o primeiro grupo, então `$1` a recoloca. Três ocorrências, três mudanças. Uma busca literal não consegue expressar isso: ela só transforma uma string fixa em outra string fixa.
Um padrão, as duas grafias
Entrada
The Colour of the sky.
colourless and calm.
Saída
The color of the sky.
colorless and calm.
Com `i` na caixa de flags, `colour` encontra também a grafia com maiúscula. Note o que a flag não faz: a maiúscula que abria a linha desapareceu, porque um padrão não tem ideia do que uma palavra está fazendo em uma frase. Se a maiúscula importa, isso é uma segunda regra.
Uma ocorrência que cruza a borda de um trecho em itálico
Entrada
1
00:00:01,000 --> 00:00:04,000
<i>Hello there</i>, welcome aboard
Saída
1
00:00:01,000 --> 00:00:04,000
Hello there. Welcome aboard
A ocorrência começa dentro do itálico e termina fora dele, então metade do que a marcação cobria desapareceu e não resta um lugar correto para ela. É descartada e contada em vez de ficar em volta das letras erradas.
Perguntas frequentes
Como mantenho parte do que o padrão encontrou?
Coloque parênteses em volta dessa parte no padrão e refira-se a ela como `$1` na substituição — `$2` para o segundo grupo, e assim por diante. O padrão `\s+([.,!?])` com a substituição `$1` apaga o espaço e mantém a pontuação, que é exatamente o trabalho que uma string fixa não consegue fazer. `$&` representa a ocorrência inteira e `$$` um cifrão que você realmente quer no texto.
Com quais flags o padrão roda?
`g` e `u` estão ligados por padrão. `g` encontra todas as ocorrências em vez de parar na primeira, e `u` faz o padrão ler o texto caractere a caractere, o que faz `\p{L}`, `\p{N}` e companhia significarem o que dizem. Acrescente `i` para ignorar maiúsculas, `m` para âncoras por linha e `s` para um ponto corresponder a uma quebra de linha. Esvaziar a caixa roda sem flag nenhuma. Qualquer outra letra — `x`, `y`, `d` — recusa a execução em vez de ser ignorada.
Isto é a mesma coisa que a página de localizar e substituir?
Não, e a diferença está no que você digita na caixa. Aquela página compara caracteres exatamente como escritos, então a única coisa que pode dar errado é não encontrar nada. Esta roda um programa, que pode encontrar milhares de lugares em uma única passagem e reescrever todos. É por isso que o padrão começa vazio aqui, que flags desconhecidas são recusadas e que as duas páginas são separadas: em uma, uma reescrita que não aconteceu é um erro de digitação; na outra, pode ser um padrão que significava outra coisa em silêncio.
O que acontece quando duas ocorrências se sobrepõem?
A mais à esquerda vence e a varredura continua depois dela, que é o que todo motor de expressão regular faz. Assim, `aa` contra `aaaa` encontra duas ocorrências e não três, e depois de substituí-las o texto é `bb`. Se você esperava três, o padrão está descrevendo algo que o motor não consegue fazer, e é melhor saber disso antes de o arquivo voltar.
A página me protege de um padrão lento?
Ela recusa uma família deles antes de qualquer coisa rodar: uma repetição aplicada a um grupo que já repete sem limite, como `(a+)+` ou `(\d+)+`. Esses são os padrões que travam a aba do navegador, e trinta caracteres de entrada bastam. Três formas não são pegas e vale evitar à mão — duas alternativas sobrepostas dentro de um grupo repetido, como `(a|a)+`; várias repetições sobrepostas lado a lado, como `a*a*a*b`; e contagens enormes, como `(a{100}){100}`. Nada é medido por relógio, porque um limite de tempo faria o mesmo arquivo sair diferente em uma máquina rápida e em uma lenta.
O que acontece com itálico e outros estilos quando o texto é reescrito?
Uma marcação fora da edição se desloca junto com o texto, e uma marcação que contém a edição se estica ou encolhe para acompanhar. Quando uma ocorrência cruza a borda de uma marcação, não sobra lugar correto para o estilo, então ele é descartado e o relatório de perdas informa quantos foram descartados. A marcação de karaokê é descartada sempre que uma ocorrência a toca, porque a divisão por sílaba deixa de se alinhar com as palavras.
Posso usar isto em qualquer formato de legenda?
Sim. O padrão é aplicado ao texto de cada bloco, e todos os doze formatos expõem esse texto, então um SRT, um arquivo WebVTT, um ASS com estilos, uma letra em LRC ou uma transcrição em texto simples funcionam do mesmo jeito. Cada arquivo é gravado de volta no formato em que chegou, e os números de quadro de um arquivo MicroDVD usam a taxa de quadros do painel.