NotePad ++ - Pourquoi la recherche de ^ ne fonctionne-t-elle pas?


16

J'essaie de m'éloigner de TextPad , et je ne peux tout simplement pas obtenir des expressions régulières comme ^et $à remplacer. J'ai définitivement coché la case d'expression régulière.

Qu'est-ce que je fais mal?

J'essaie de trouver le début d'une nouvelle ligne. Dans TextPad, il s'agit de trouver '^' et de s'assurer que les expressions régulières sont activées. Avec Notepad ++, cela ne fait pas cela. Il dit simplement "Introuvable".


J'ai utilisé TextPad et j'ai trouvé ce même problème ennuyeux (pour le moins). Fondamentalement, la fonctionnalité Regex NPP est un retard de croissance lorsque comared à la plupart des autres regex s. Cela vient du fait que Npp est une abstraction de l'éditeur Scintilla qui utilise un RegEx basé sur une seule ligne :( - L'équipe Npp est tout à fait consciente de ce problème, mais il a (curieusement) été en veilleuse (un problème de temps et de ressources). $ fonctionne, mais ils n'ont pas encore ^ de travailler sur plusieurs lignes. Je connais cette limitation, et je travaille avec (et autour d'elle). Comme mentionné ci-dessous ^ (.) fonctionne (Rarement, je reviens à TPad ou UltraEdit)
Peter.O

1
PS. vous pouvez souvent utiliser Extended (vs RegEx ) comme solution de contournement pour \ r et \ n - cela imite un début de ligne. De plus, en passant, vous pouvez rester dans la recherche normale et activer Affichage - Afficher le symbole - Afficher la fin de la ligne. Bien qu'ils n'apparaissent pas (visuellement) dans le champ Rechercher, si vous sélectionnez CRLF d'abord, l'amorçage automatique du champ de recherche intervient lorsque vous appuyez sur CTRL + F, et il devient très heureusement une recherche sur plusieurs lignes (mais pas RegEx). Ce n'est pas très différent de la recherche étendue , mais je l'ai trouvée intéressante, et certains lecteurs peuvent également la trouver. (J'adore Npp :)
Peter.O

Pourquoi essayez-vous exactement de trouver le début d'une nouvelle ligne? Voulez-vous ajouter quelque chose au début de chaque ligne? Cela nous aiderait à répondre à la question. Si vous utilisez Notepad ++ pour vous éloigner d'une solution payante, vous devrez apprendre ses bizarreries et les contourner. Je n'ai eu aucun problème à le faire, car Notepad ++ est très bon à bien d'autres égards.
Joshua Nurczyk

Réponses:


25

^ et $ sont tous deux des ancres dans Regex, ce qui signifie que si vous souhaitez remplacer les caractères littéraux ^et que $vous devez les échapper, généralement avec une barre oblique inverse ( \^, et \$).

Pour trouver le premier caractère d'une ligne, utilisez ^.

L'ancre de la ligne de départ ( ^) est une correspondance de largeur nulle, donc la combiner avec le. trouvera n'importe quel caractère au début d'une ligne.

Peut-être pouvez-vous expliquer ce que vous essayez de faire?


8

Parce que ce sont des caractères spéciaux qui représentent l'avant ( ^) et la fin de la ligne ( $). Essayez de leur échapper avec un \.

Exemples:

Match "Chat" au début de la ligne:

^Cat

Match "Chat" en fin de ligne:

Cat$

Match "Cat" comme seule chose sur une ligne:

^Cat$

Faites correspondre un «100 $» dans une ligne:

\$100 

Voici un lien pour les détails sur la correspondance des expressions régulières dans Notepad ++.


2
Le lien semble être (effectivement) rompu.
Peter Mortensen

5

J'ai moi-même eu le même problème. Après quelques essais et erreurs, vous pouvez obtenir le même résultat en procédant comme suit:

Trouver: ^ (.)

Remplacer: [la chaîne que vous souhaitez insérer] \ 1

Cela permettra de localiser et de baliser le premier caractère de la ligne, de mettre la nouvelle chaîne et de mettre le caractère balisé après.

Par exemple, je devais insérer un guillemet simple au début de chaque ligne:

Trouver: ^ (.)

Remplacer: '\ 1

Vous pouvez faire de même pour la fin de la ligne en faisant:

Trouver: (.) $

Remplacez: \ 1 * [la chaîne que vous souhaitez ajouter] *


1

J? ai compris.

Avant

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

Après

  • Albert
  • Lucas
  • Rober_Klein
  • Pêcheur

Supprimer après le caractère ou le texte

@ (. *) $

Supprimer avant le caractère ou le texte

^ (. *) @

dot = any character
asterisk = zero or more times

1

Voici comment faire...

Avant:

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

Après:

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

Donc. Dans le champ de recherche , mettez:

$_GET(.*])

Sur le champ de remplacement , mettez:

htmlentities($_GET\1)

0

Le problème semble avoir été résolu maintenant.

Dans Notepad ++ v6.9.2 (fonctionnant sous Windows 7), je fais fonctionner ^(début de ligne) et $(fin de ligne).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.