OmegaT 4.2 - Guia do utilizador

Apêndice D. Expressões regulares

As expressões regulares (ou regex para abreviar) utilizadas nas procuras e regras de segmentação são as suportadas pelo Java. Se precisar de informações mais específicas, consulte a documentação Java Regex. Ver referências e exemplos adicionais abaixo.

Nota

Este capítulo destina-se a utilizadores avançados, que precisam de definir as suas próprias variantes de regras de segmentação ou conceber itens de procura-chave mais complexos e poderosos.

Tabela D.1. Regex - Marcas
A construção ... corresponde ao seguinte
(?i) Permite a correspondência não sensível a maiúsculas e minúsculas (por defeito, o padrão é sensível a maiúsculas e minúsculas).

Tabela D.2. Regex - Carácter
A construção ... corresponde ao seguinte
x O carácter x, excepto o seguinte...
\uhhhh O carácter com valor hexadecimal 0xhhhh
\t O carácter de tabulação ("\u0009")
\n O carácter de nova linha ("\u000A")
\r O carácter de retorno do carro ("\u000D")
\f O carácter de nova folha ("\u000C")
\a O carácter de som (bell) ("\u0007")
\e O carácter de escape ("\u001B")
\cx O carácter de controlo correspondente a x
\0n O carácter com valor octal 0n (0 <= n <= 7)
\0nn O carácter com valor octal 0nn (0 <= n <= 7)
\0mnn O carácter com valor octal 0mnn (0 <= m <= 3, 0 <= n <= 7)
\xhh O carácter com valor hexadecimal 0xhh

Tabela D.3. Regex - Citação
A construção ...corresponde ao seguinte
\ Nada, mas cita o carácter seguinte. Isto é necessário se desejar introduzir qualquer um dos meta-caracteres !$()*+.<>?[\]^{|} para corresponder como eles próprios.
\\ Por exemplo, este é o carácter de barra esquerda
\Q Nada, mas cita todos os caracteres até \E
\E Nada, mas termina a citação iniciada por \Q

Tabela D.4. Regex - Classes para blocos e categorias Unicode
A construção ...corresponde ao seguinte
\p{InGreek} Um carácter no bloco grego ( bloco simples)
\p{Lu} Uma letra maiúscula ( categoria simples)
\p{Sc} Um símbolo de moeda
\P{InGreek} Qualquer carácter, excepto um do bloco grego (negação)
[\p{L}&&[^\p{Lu}]] Qualquer letra, excepto uma letra maiúscula (subtracção)

Tabela D.5. Regex - Classes de caracteres
A construção ...corresponde ao seguinte
[abc] a, b, ou c (classe simples)
[^abc] Qualquer carácter excepto a, b, ou c (negação)
[a-zA-Z] a até z ou A até Z, inclusive (intervalo)

Tabela D.6. Regex - Classes de caracteres pré-definidas
A construção ...corresponde ao seguinte
. Qualquer carácter (excepto para terminadores de linha)
\d Um algarismo: [0-9]
\D Um não algarismo: [^0-9]
\s Um espaço em branco: [ \t\n\x0B\f\r]
\S Um não-espaço em branco: [^\s]
\w Um carácter de palavra: [a-zA-Z_0-9]
\W Um carácter de não-palavra: [^\w]

Tabela D.7. Regex - Especificadores de limite
A construção ...corresponde ao seguinte
^ O início de uma linha
$ O fim de uma linha
\b Um limite de palavra
\B Um não-limite de palavra

Tabela D.8. Regex - Quantificadores ávidos
A construção ...corresponde ao seguinte
X ? X, uma vez ou nunca
X * X, zero ou mais vezes
X + X, uma ou mais vezes

Nota

quantificadores ávidos farão o máximo de correspondências possível. Por exemplo, a+ corresponderá a aaa em aaabbb

Tabela D.9. Regex - Quantificadores relutantes (não ávidos)
A construção ...corresponde ao seguinte
X?? X, uma vez ou nunca
X*? X, zero ou mais vezes
X+? X, uma ou mais vezes

Nota

quantificadores relutantes farão o mínimo de correspondências possível. Por exemplo, a+? corresponderá ao primeiro a em aaabbb

Tabela D.10. Regex - Operadores lógicos
A construção ...corresponde ao seguinte
XY X seguido de Y
X|Y X ou Y
(XY) XY como um só grupo

Ferramentas Regex e exemplos de utilização

Estão disponíveis várias ferramentas interactivas para desenvolver e testar expressões regulares. Seguem geralmente o mesmo padrão (para um exemplo de teste de expressão regular ver abaixo): a expressão regular (entrada superior) analisa o texto de procura (caixa de texto no meio), produzindo os resultados na caixa de texto.

Figura D.1. Teste de Regex
Teste de Regex

Veja o The Regex Coach para Windows, Linux, FreeBSD como ferramenta independente. Isto é muito idêntico ao exemplo acima.

Uma bela colecção de casos regex úteis pode ser encontrada no OmegaT em si mesmo (ver Opções > Segmentação). A lista seguinte inclui expressões que poderá achar úteis ao procurar através da memória de tradução:

Tabela D.11. Regex - Exemplos de expressões regulares em traduções
Expressão regular Encontra o seguinte:
(\b\w+\b)\s\1\b palavras duplas
[\.,]\s*[\.,]+ vírgula ou um ponto, seguido de espaços e ainda outra vírgula ou ponto
\. \s+$ espaços extra após o ponto no final da linha
\s+a\s+[aeiou] Inglês: palavras, começando com vogais, devem geralmente ser precedidas por "an", não "a".
\s+an\s+[^aeiou] Inglês: a mesma verificação que acima, mas relativa às consoantes ("a", não "an")
\s{2,} mais de um espaço
\.[A-Z] Ponto, seguido de uma letra maiúscula - possivelmente falta um espaço entre o ponto e o início de uma nova frase?
\bis\b procurar por "is", não por "this" ou "isn't", etc.