Acabei de encontrar um bug na implementação lookbehind do Notepad ++?

0

Estou usando o Notepad ++ v7.3.3 e estou testando o seguinte Regex:

Texto de origem

aa

Padrão

(?<!a)a

Isso está retornando duas correspondências. O primeiro a e o segundo a. Quando testa essa expressão em regex101 , ela retorna apenas uma correspondência (a primeira a).

Por que o Notepad ++ também é compatível com o segundo a? Isso pode ser um erro?

    
por Wouter 27.04.2017 / 17:53

1 resposta

2

Não é um bug ... O Notepad ++ "search" quando você tem DOWN selecionado, não reconhece nenhum caractere ANTES do cursor. Quando você selecionou o primeiro a, seu cursor foi movido. Então, quando o cursor é passado o primeiro a, ele corresponde ao a restante. O mesmo pode ser dito sobre a pesquisa "UP", ele irá ignorar qualquer caractere do cursor até o final do documento.

Seu regex não falhou, é só você ter que lembrar e entender a natureza do editor de texto em geral.

O Regex 101 não executou uma pesquisa de string "parcial", como o Notepad ++. No entanto, você pode corrigir isso usando âncoras no seu regex. Você poderia ancorar este regex no início da linha com ^. Então você não vai conseguir um jogo no seu segundo a.

^(?<!a)a
    
por 27.04.2017 / 17:59