A expressão regular do Ruby tem um operador não compatível como “! ~” Em Perl?
92
Eu só quero saber se ruby regex tem um operador não correspondente, assim como !~em perl. Acho que é inconveniente de usar (?!xxx)ou (?<!xxxx)porque você não pode usar padrões regex na xxxparte.
Tudo o que você precisava fazer era ligar irbe tentar. Provavelmente teria sido mais rápido do que postar uma pergunta SO.
Mark Thomas
32
Mas não mais rápido do que pesquisar 'ruby não corresponde' e encontrar essa resposta no SO;)
micapam
3
Eu experimentei por um tempo antes de ficar preso, pesquisando no Google e encontrando essa resposta (que funcionou.). Nunca desista de alguém por fazer uma pergunta.
Jonathon Nordquist
2
Ele formulou de forma subótima. O que acho que ele quis dizer foi: "lembre-se de que você pode iniciar irbe experimentar. Provavelmente mais rápido do que postar uma pergunta SO, e uma ótima oportunidade de testar as coisas em geral." Pelo menos foi assim que ouvi.
Com ruby 2.4, há também uma sintaxe um pouco mais agradável RegExp#match?, que você pode facilmente negar. De acordo com as notas de lançamento , ele faz ainda menos alocações do que!~
É uma solução de nível inferior. Nem sempre é fácil converter expressões regulares dessa maneira. Por outro lado, esta solução não depende de linguagem de programação de nível superior;)
irb
e tentar. Provavelmente teria sido mais rápido do que postar uma pergunta SO.irb
e experimentar. Provavelmente mais rápido do que postar uma pergunta SO, e uma ótima oportunidade de testar as coisas em geral." Pelo menos foi assim que ouvi.Respostas:
Sim:
!~
funciona muito bem - você provavelmente pensou que não, porque está faltando na página de documentação doRegexp
. No entanto, funciona:fonte
!~
está documentado em Objeto .RegExp#match?
, que você pode facilmente negar. De acordo com as notas de lançamento , ele faz ainda menos alocações do que!~
AFAIK (?! Xxx) é compatível:
fonte