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".


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?


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 ++.


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] *


1

Deixa comigo.

Antes

  • Albert@hotmail.com
  • Lucas@gmail.com
  • Rober_Klein@aol.com
  • Fisher@zmail.com

Depois de

  • Albert
  • Lucas
  • Rober_Klein
  • Fisher

Remover após o caractere ou texto

@ (. *) $

Remover antes do caractere ou texto

^ (. *) @

dot = any character
asterisk = zero or more times

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)

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.

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.