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. |