Comportamento inesperado com palavra find e replace para `? {1,2}`. Correspondência de longas cadeias de caracteres


1

A pergunta relaciona-se ao achado e substituição da palavra por curingas habilitados (quase regex).

De acordo com esta página da microsoft :

  • ? representa qualquer caractere único (como. no regex)
  • {n, m} representa um número definido de caracteres entre n e m.

No entanto, estou recebendo os seguintes resultados

string de origem: aaaaaaaa bbbbbbbb aaaaa

encontre o que: b{1,2}a
resultado: abbbbb bba aaaa
(esperado)

encontre o que: ??a
resultado: abbbbb bba aaaa
(esperado)

encontre o que: ?{1,2}a
resultado: abbbbbbba aaaa

O que na terra está acontecendo com o último? Parece estar se comportando como *

Respostas:


2

Na página da Web que você forneceu:

{n, m} - De n para m ocorrências do anterior personagem ou expressão

e

() - Expressão

e

? - Qualquer caractere único , incluindo caracteres de espaço e pontuação

Então eu acho "?" não é tratado como "caractere" neste caso (como "?" é "qualquer caractere único"), mas quando você o coloca entre parênteses, ele se torna expressão e funciona.

Portanto, o regex correto aqui é: (?) {1,2} a


Isso não está claro na documentação, obrigado por me ajudar a descobrir isso!
Some_Guy
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.