Comportamento inesperado com a palavra localizar e substituir por '? {1,2}'. Correspondência de longas cadeias de caracteres

1

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

De acordo com esta p�ina 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: aaaaaaaabbbbbbbaaaaa

find what: b{1,2}a
result: abbbbbbbaaaaa
(expected)

find what: ??a
result: abbbbbbbaaaaa
(expected)

find what: ?{1,2}a
result: abbbbbbbaaaaa

Que diabos está acontecendo com o último? Parece estar se comportando como *

    
por Some_Guy 18.01.2017 / 12:28

1 resposta

2

Na página da Web que você forneceu:

{n,m} - From n to m occurrences of the previous character or expression

e

() - Expression

e

? - Any single character, including space and punctuation characters

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

    
por 19.01.2017 / 00:09