Pergunta

Qual mecanismo de expressão regular o Java usa?

Em uma ferramenta como RegexBuddy se eu usar

[a-z&&[^bc]]

essa expressão em Java é boa, mas no RegexBuddy não foi compreendida.

Na verdade, relata:

Combine um único caractere presente na lista abaixo [a-z&&[^bc]

  • Um personagem no intervalo entre a e z : a-z
  • Um dos personagens &[^bc : &&[^bc
  • Combine o personagem ] literalmente : ]

mas eu quero combinar um personagem entre a e z cruzado com um personagem que não é b ou c

Foi útil?

Solução

Como a maioria dos sabores regex, java.util.regex.Pattern possui recursos próprios específicos com sintaxe que pode não ser totalmente compatível com outras;isso inclui união, interseção e subtração de classes de caracteres:

  • [a-d[m-p]] : a através d, ou m através p: [a-dm-p] (União)
  • [a-z&&[def]] : d, e, ou f (interseção)
  • [a-z&&[^bc]] : a através z, exceto por b e c: [ad-z] (subtração)

A "advertência" mais importante do Java regex é que matches tenta combinar um padrão com o todo corda.Isso é atípico na maioria dos motores e às vezes pode ser uma fonte de confusão.

Veja também


Na subtração de classe de personagem

A subtração permite definir, por exemplo, "todas as consoantes" em Java como [a-z&&[^aeiou]].

Esta sintaxe é específica para Java.No esquema XML, .NET, JGSoft e RegexBuddy, é [a-z-[aeiou]].Outros sabores podem não suportar esse recurso.

Referências

Perguntas relacionadas

Outras dicas

Java usa seu próprio mecanismo de expressão regular, cujo comportamento é definido no Padrão aula.

Você pode testá-lo com um Plug-in Eclipse ou on-line.

RegexBuddy ainda não oferece suporte à sintaxe de união, interseção e subtração de classe de caracteres que é exclusiva do tipo de expressão regular Java.Esta é a única parte da sintaxe Java regex que o RegexBuddy ainda não suporta.Estamos planejando implementar isso em uma versão futura do RegexBuddy.A razão pela qual isso foi adiado é porque nenhum outro tipo de expressão regular suporta esta sintaxe.

P.S.:Se você tiver alguma dúvida sobre o RegexBuddy em particular, adicione a tag "regexbuddy" à sua pergunta.Então a pergunta aparece automaticamente no meu leitor de RSS.Não sigo a tag "regex" porque muitas perguntas usam essa tag, e a maioria já foi respondida quando as vejo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top