NotePad ++ - Por que encontrar ^ não funciona?

16

Estou tentando me afastar do TextPad e simplesmente não consigo obter expressões regulares como ^e $para ser substituído. Definitivamente marquei a caixa de expressões regulares.

O que estou fazendo de errado?

Estou tentando encontrar o início de uma nova linha. No TextPad, ele encontra '^' e garante que expressões regulares estejam ativadas. Com o Notepad ++, isso não ocorre. Apenas diz "Não encontrado".

Jack Kada
fonte
Eu usei o TextPad e achei esse mesmo problema irritante (para dizer o mínimo). Basicamente, a funcionalidade Regex do Npp é atrofiada quando comparada à maioria dos outros Regex-s. Isso decorre do fato de o Npp ser uma abstração do Editor Scintilla que usa um RegEx baseado em linha única :( - A equipe do Npp está bem ciente desse problema, mas (estranhamente) está em segundo plano (uma questão de tempo e recursos). $ funciona, mas eles não precisam ^ trabalhar em várias linhas (ainda). Conheço essa limitação e trabalho com (e em torno dela). Conforme mencionado abaixo ^ (.) funciona . (Raramente, eu reverter para TPad ou UltraEdit)
Peter.O
1
PS. muitas vezes você pode usar o Extended (vs RegEx ) como uma solução alternativa para \ re \ n - isso simula um início de linha. Além disso, como alternativa, você pode permanecer na pesquisa Normal e ativar Exibir - Mostrar símbolo - Mostrar fim da linha. Embora eles não apareçam (visualmente) no campo Localizar, se você selecionar CRLF primeiro, o auto-prime do campo Find é ativado quando você pressiona CTRL + F e, felizmente, torna-se uma pesquisa de várias linhas (mas não a RegEx). Não é muito diferente da Pesquisa estendida , mas achei interessante, e alguns leitores também podem achar isso. (I love Npp :)
Peter.O
Por que exatamente você está tentando encontrar o início de uma nova linha? Deseja adicionar algo no início de cada linha? Isso nos ajudaria a responder à pergunta. Se você estiver usando o Notepad ++ para se afastar de uma solução paga, precisará aprender suas peculiaridades e contorná-las. Não tive problemas para fazer isso, pois o Notepad ++ é muito bom de muitas outras maneiras.
Joshua Nurczyk

Respostas:

25

^ e $ são âncoras no Regex, o que significa que se você deseja substituir os caracteres literais ^e $precisa escapar deles, geralmente com uma barra invertida à esquerda ( \^, e \$).

Para encontrar o primeiro caractere em uma linha, use ^.

A âncora da linha de partida ( ^) é uma correspondência de largura zero, combinando-a com o. encontrará qualquer caractere no início de uma linha.

Talvez você possa explicar o que realmente está tentando fazer?

John Weldon
fonte
8

Porque esses são caracteres especiais que representam a frente ( ^) e o final da linha ( $). Tente escapar deles com um \.

Exemplos:

Combine "Gato" no início da linha:

^Cat

Combine "Gato" no final da linha:

Cat$

Combine "Gato" como única coisa em uma linha:

^Cat$

Faça corresponder um "$ 100" dentro de uma linha:

\$100 

Aqui está um link para os detalhes sobre correspondência de expressão regular no Notepad ++.

RC.
fonte
2
O link parece estar (efetivamente) quebrado.
Peter Mortensen
5

Eu mesmo tive o mesmo problema. Após algumas tentativas e erros, você pode obter o mesmo fazendo o seguinte:

Encontre: ^ (.)

Substitua: [a sequência que você deseja inserir] \ 1

O que isso fará é localizar e marcar o primeiro caractere da linha, inserir a nova string e colocar o caractere marcado depois.

Por exemplo, eu precisava inserir uma única citação no início de cada linha:

Encontre: ^ (.)

Substitua: '\ 1

Você pode fazer o mesmo para o final da linha, fazendo:

Encontre: (.) $

Substitua: \ 1 * [a sequência que você deseja anexar] *

Willy
fonte
1

Aqui está como fazê-lo ...

Antes:

$_GET['id']; $_GET['nick'];

Depois de:

htmlentities($_GET['id']); htmlentities($_GET['nick']);

Então. No campo find , coloque:

$_GET(.*])

No campo substituir , coloque:

htmlentities($_GET\1)
Lue
fonte
0

O problema parece ter sido corrigido agora.

No Notepad ++ v6.9.2 (executando no Windows 7), faço com que ambos ^(início da linha) e $(fim da linha) funcionem.

Elias Mossholm
fonte