Chapter 17. Expressões regulares
Prev |  | Next

# Chapter 17. Expressões regulares

As expressões regulares (conhecidas como regex) usadas em buscas e regras de segmentação são aquelas suportadas pelo Java. Caso você precise de mais informações específicas, consulte o Documentação Java Regex. Veja outras referências e exemplos a seguir.

### Note

Este capítulo é orientado para usuários avançados que desejam definir suas próprias variantes de regras de segmentação, ou planejar itens de chave de busca mais complexos.

Table 17.1. Regex - Marcações

A construção | ... corresponde ao seguinte
--- | ---
(?i) | Ativa correspondências que ignoram maiúsculas e minúsculas (por predefinição, o padrão faz a distinção entre maiúsculas e minúsculas).

Table 17.2. Regex - Caractere

A construção | ... corresponde ao seguinte
--- | ---
x | O caractere x, exceto o seguinte...
\uhhhh | O caractere com valor hexadecimal 0xhhhh
\t | O caractere de tabulação ('\u0009')
\n | O caractere de nova linha (alimentação de linha) ('\u000A')
\r | O caractere de retornar ao início da linha ('\u000D')
\f | O caractere de alimentar formulário ('\u000C')
\a | O caractere de alerta (sino) ('\u0007')
\e | O caractere escape ('\u001B')
\cx | O caractere de controle corresponde ao x
\0n | O caractere com valor octal 0n (0 <= n <= 7)
\0nn | O caractere com valor octal 0nn (0 <= n <= 7)
\0mnn | O caractere com valor octal 0mnn (0 <= m <= 3, 0 <= n <= 7)
\xhh | O caractere com valor hexadecimal 0xhh

Table 17.3. Regex - Citação

A construção | ... corresponde ao seguinte
--- | ---
\ | Nothing, but quotes the following character. Isso é necessário se você quiser inserir quaisquer metacaracteres !$()*+.&lt;&gt;?[ \\ ]^{|} para casar como eles próprios.
\\ | Por exemplo, este é um caractere de barra invertida
\Q | Nada, mas escapa todos os caracteres até \E
\E | Nada, mas finaliza o escape iniciado pelo \Q

Table 17.4. Regex - Classes para blocos e categorias do Unicode

A construção | ... corresponde ao seguinte
--- | ---
\p{InGreek} | Um caractere no bloco Grego (bloco único)
\p{Lu} | Uma letra maiúscula (categoria única)
\p{Sc} | Um símbolo de moeda
\P{InGreek} | Qualquer caractere, exceto um no bloco Grego (negação)
[\p{L}&&[^\p{Lu}]] | Qualquer letra, exceto letra maiúscula (subtração)

Table 17.5. Regex - Classes de caracteres

A construção | ... corresponde ao seguinte
--- | ---
[abc] | a, b, ou c (classe simples)
[^abc] | Qualquer caractere exceto a, b, ou c (negação)
[a-zA-Z] | a até z ou A até Z, inclusive (intervalo)

Table 17.6. Regex - Classes de caracteres predefinidos

A construção | ... corresponde ao seguinte
--- | ---
. | Qualquer caractere (exceto para fim de linha)
\d | Um dígito: [0-9]
\D | Um caractere que não seja dígito: [^0-9]
\s | Um caractere de espaço em branco: [ \t\n\x0B\f\r]
\S | Um caractere que não seja de espaço em branco: [^\s]
\w | Um caractere de palavra: [a-zA-Z_0-9]
\W | Um caractere que não seja de palavra: [^\w]

Table 17.7. Regex - Correspondentes de limite (borda)

A construção | ... corresponde ao seguinte
--- | ---
^ | O início de uma linha
$ | O final de uma linha
\b | Limite de uma palavra
\B | Limite que não seja de palavra

Table 17.8. Regex - Quantificadores gulosos

A construção | ... corresponde ao seguinte
--- | ---
X? | X, uma única vez ou nenhuma
X* | X, zero ou mais vezes
X+ | X, uma ou mais vezes

### Note

os quantificadores gulosos farão o maior número de correspondências possíveis. Por exemplo, a+? casará aaa em aaabbb

Table 17.9. Regex - Quantificadores não-gulosos

A construção | ... corresponde ao seguinte
--- | ---
X?? | X, uma única vez ou nenhuma
X*? | X, zero ou mais vezes
X+? | X, uma ou mais vezes

### Note

os quantificadores não gulosos farão o menor número de correspondências possíveis. Por exemplo, a+? casará o primeiro a em aaabbb

Table 17.10. Regex - Operadores lógicos

A construção | ... corresponde ao seguinte
--- | ---
XY | X seguido por Y
X|Y | Ou X ou Y
(XY) | XY como um grupo único

## 1. Ferramentas e exemplos de uso das Regex

Diversas ferramentas interativas estão disponíveis para desenvolver e testar as expressões regulares. Em geral, elas seguem muito o mesmo padrão (para um exemplo do testador de expressões regulares veja abaixo): a expressão regular (mostrada no topo) analisa o texto de pesquisa (caixa de texto no meio), e gera os hits, mostrados na caixa de resultados.

Figure 17.1. Testador das Regex

Veja The Regex Coach para as versões Windows, Linux, FreeBSD de ferramenta autônoma. O mesmo vale para o exemplo acima..

Uma boa coleção de casos de regex úteis pode ser encontrada no próprio OmegaT (veja Opções > Segmentação). A seguinte lista inclui expressões que podem ser úteis na busca em memória de tradução:

Table 17.11. Regex - Exemplos de expressões regulares em traduções

Expressão regular | Encontra os seguintes:
--- | ---
(\b\w+\b)\s\1\b | palavras duplicadas
[\.,]\s*[\.,]+ | vírgula ou ponto final, seguido de espaçoes e novamente vírgula ou ponto final
\. \s+$ | espaços extras, após o ponto no fim da linha
\s+a\s+[aeiou] | Inglês: palavras, começando com vogais, que deveriam sempre ser precedidas por "an" e não "a"
\s+an\s+[^aeiou] | Inglês: a mesma verificação acima, porém a respeito de consoantes ("a", não "an")
\s{2,} | mais de um espaço
\.[A-Z] | Ponto final, seguido por um caractere maiúsculo - possivelmente um espaço está faltando entre o ponto final e o início de uma nova sentença?
\bis\b | procura por "is", e não "this" ou "isn't", etc.

Prev |  | Next
Chapter 16. Buscar e substituir | Home | Chapter 18. Dicionários