Rechercher et remplacer du texte entre ^ et ~ dans Notepad ++

22

J'ai un grand fichier texte où je veux supprimer tout le texte entre le symbole ^ et le symbole ~. Cela doit également fonctionner sur plusieurs lignes.

J'ai essayé de faire une recherche et un remplacement réguliers à l'aide ^*~de la zone Rechercher et rien dans la zone Remplacer, mais il a trouvé 0 résultats.

Splendeur
la source

Réponses:

24

Cela n'est pas possible avec une recherche et un remplacement réguliers . Si vous utilisez Notepad ++ 6, vous pouvez profiter du nouveau moteur regex qui prend en charge PCRE ( source ).

Appuyez sur Ctrl+ Hpour ouvrir la boîte de dialogue Rechercher et remplacer et effectuez l'action suivante:

Find what:          \^.*?~
Replace with:       
Wrap around:        checked
Regular expression: selected
. matches newline:  checked

Appuyez maintenant sur Alt+ Apour remplacer toutes les occurrences.

L'expression régulière dans Rechercher ce qui est composé comme suit:

  • \^est un littéral ^ .
  • .*? est le moins de caractères permettant à l'expression régulière de correspondre.
  • ~est un littéral ~ .
Dennis
la source
3
si vous changez. *? ~ en [^ ~] * ~, cela devrait fonctionner sans nécessiter / utiliser PCRE.
barlop
1
@barlop: J'ai pris la fonction Rechercher et remplacer régulièrement comme mode de recherche: Normal , pas Rechercher et remplacer à l' aide d'expressions régulières. Cela aurait pu être un malentendu. En tout cas, si je me souviens bien, les versions antérieures à 6 ne prenaient pas en charge les modèles multi-lignes.
Dennis
Le .*?modèle a fonctionné pour moi pour rechercher entre les caractères de ;et <. La recherche est donc TROUVER ;.*?<REMPLACER ;avec les options sélectionnées pour Regular expressionet. matches new line
SherlockSpreadsheets
8

Tu vas vouloir chercher \^.*?~et t'assurer . matches newline est activé:

entrez la description de l'image ici

En effet, ^a une signification particulière, il correspond au début d'une ligne. Ainsi, nous devons y échapper avec une barre oblique inverse \^.

L'écriture ^*correspondrait à "n'importe quel nombre de début de ligne consécutif". .*correspond à "n'importe quel caractère", mais par défaut, il ne correspond pas aux sauts de ligne.

Der Hochstapler
la source
2
Soyez prudent avec le comportement gourmand du regex. S'il y a plusieurs ~caractères (ou c.-à-d. Plusieurs correspondances), cela correspondra du premier ^jusqu'au dernier ~.
Heavyd
@heavyd <question> Êtes-vous sûr? </question>. Il a utilisé *?ce n'est pas gourmand, c'est paresseux .*?~ne correspondra jamais à plus d'un ~. Donc c'est d'accord.
barlop
@barlop: Il a commenté peu de temps après avoir répondu. C'était un montage ninja.
Der Hochstapler le
2

Essayez d'utiliser cette expression régulière dans la section \^[^~]*~ Rechercher pour remplacer tout entre ^ et ~ inclusivement.

barlop
la source
et pour exclusivement, je suppose que cela nécessite PCRE, puis faites quelque chose (? <= ^) [^ ~] * (? = ~) Je n'ai pas n ++ pour le tester, mais si cela échoue, essayez de changer (? <= ^ ) au (? <= \ ^)
barlop
Pour exclusivement, il suffit de remplacer par ^~.
Dennis
@Dennis Je veux dire s'il veut tout remplacer entre le ^ et ~ mais sans inclure le ^ et ~
barlop
1
Est -ce pas ce que vous obtenez si vous remplacez \^[^~]*~avec ^~?
Dennis
@ Dennis oh je vois ce que tu veux dire, bon point.
barlop
0

J'avais une exigence de remplacement similaire entre les caractères de début et de fin. Cela venait de l'email Outlook; des centaines de membres et je voulais juste les noms des personnes avec tout supprimé entre <RemoveTextHere> .

Original

First1 Last1 <[email protected]>; First2 Last2 <[email protected]>; First3 Last3 <[email protected]>; First4 Last4 <[email protected]>;

Dennis était proche de ma solution Find what: \^.*?~mais j'ai dû changer mes caractères littéraux Find what: \<.*?>puis j'ai dû supprimer la première barre oblique Find what: <.*?>.

Mis à jour Find what: <.*?> ; Remplacez vide.

First1 Last1 ; First2 Last2 ; First3 Last3 ; First4 Last4

_

Caractères spéciaux : *, $, \, +, ^, (et ), [, ], {et}

Les caractères spéciaux sont décrits par Jerry Jeremiah ici /programming/37742519/notepad-wildcard .

SherlockSpreadsheets
la source
Cela ne répond pas à la question.
Toto