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.
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 !$()*+.<>?[ \\ ]^{|} 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 |
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 |
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 |
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.
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. |