Como você usa o tubo de regex Notepad ++ | para cadeias mais longas do que um personagem?
Pergunta
Eu estou tentando obter o Notepad ++ para regex encontrar todas as ocorrências de "abc" e "def" na seguinte frase:
O ABC foi para a def.
Nenhum dos seguintes sintaxes parecem funcionar:
- abc | def
- [abc | def]
- (ABC) | (def)
- (abc | def)
NOTA: "[a | d]" corresponde a qualquer instância de "a" ou "d" quando eu testei
Solução
Atualize para v6 Notepad ++. Desde o changelog: "PCRE (Perl Compatible Regular Expressions) é suportado." Eu tenho verificado que | obras em busca regex ao usar v6 Notepad ++.
Outras dicas
Não é nada de especial sobre "mais do que um personagem", Notepad ++ não suporta o | personagem em regex. Nem mesmo "a | d" obras. Consulte o regex ajuda página . versão 6.1.1 do Notepad ++ agora suporta |
.
Eu sugiro usar um editor com uma implementação de regex adequado como gvim ou UltraEdit .
Dentro de uma declaração conjunto de caracteres ([…]
) apenas os caracteres \
, ]
e -
são caracteres especiais com as funções especiais de escapar o carácter seguinte, fechando a declaração conjunto de caracteres e marcação de um intervalo de caracteres (apenas se não está escrito no início ou final), respectivamente. Qualquer outro caractere é interpretet como um personagem simples.
Assim é o seu |
em [a|d]
o que significa que [a|d]
descreve qualquer um dos personagens a
, |
ou d
e não apenas a
ou d
como a|d
faz.
Eu estava tendo o mesmo problema, que é como eu aterrei aqui. Desde que é uma deficiência notepad ++, nós podemos fazer fazer usando o PowerShell. No seu caso, basta executar um Select-String:
`ss abc,def filename`
Se no Unix, então você tem outras ferramentas como grep é claro.
Eu reconheço que você queria uma solução para o Notepad ++, e eu também, mas às vezes você tem que fazer fazer.
A | deve funcionar agora.
Graças à melhoria Regex em Notepad ++
abc | def
(ABC) | (def)