Subtração de class de caractere, convertendo da syntax Java para RegexBuddy

Qual mecanismo de expressão regular o Java usa?

Em uma ferramenta como RegexBuddy se eu uso

[az&&[^bc]] 

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

Na verdade, informa:

Corresponder um único caractere presente na lista abaixo [az&&[^bc]

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

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

Como a maioria dos sabores de regex, o java.util.regex.Pattern tem seus próprios resources específicos com syntax que pode não ser totalmente compatível com outros; isso inclui união de class de caractere, interseção e subtração:

  • [ad[mp]] : a até d ou m até p : [a-dm-p] (união)
  • [az&&[def]] : d , e ou f (intersecção)
  • [az&&[^bc]] : z , exceto para b : [ad-z] (subtração)

A mais importante “ressalva” do regex Java é que faz a matches tentativas de corresponder um padrão à cadeia inteira . Isso é atípico da maioria dos mecanismos e pode ser uma fonte de confusão às vezes.

Veja também

  • regular-expressions.info/ Comparação de Flavour e Notas de Sabor Java

Na subtração de class de personagem

A subtração permite definir, por exemplo, “todas as consoantes” em Java como [az&&[^aeiou]] .

Essa syntax é específica para Java. No XML Schema, .NET, JGSoft e RegexBuddy, é [az-[aeiou]] . Outros sabores podem não suportar esse recurso.

Referências

  • regular-expressions.info/Character Classes in XML Regular Expressions
  • MSDN – classs de caracteres de expressão regulares – subtração

Perguntas relacionadas

  • Qual é o ponto por trás das interseções da class de caracteres no Regex do Java?

Java usa seu próprio mecanismo de expressão regular, cujo comportamento é definido na class Pattern .

Você pode testá-lo com um plugin do Eclipse ou online .

O RegexBuddy ainda não suporta a syntax de união, interseção e subtração de class de caractere que é exclusiva do tipo de expressão regular Java. Esta é a única parte da syntax regex Java 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 essa syntax.

PS: Se você tem uma pergunta sobre o RegexBuddy em particular, por favor, adicione a tag “regexbuddy” à sua pergunta. Em seguida, 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á é respondida no momento em que a vejo.

Intereting Posts