J'ai un fichier journal avec beaucoup de chaînes. Je voudrais tout supprimer de ce fichier (rechercher et remplacer) sauf toute chaîne commençant par: phone=
et terminée par Digits=1
par exemple: phone=97212345678&step=1&digits=1
Pour trouver cette chaîne, j'utilise (phone=.*digits=1)
et ça marche! mais je n'ai pas réussi à trouver la regex du tout sélectionner sauf cette chaîne et à tous les effacer.
Afin de supprimer tout sauf un texte spécifique, vous devez utiliser .*(text_you_need_to_keep).*
avec .
correspondant à une nouvelle ligne.
Dans Notepad ++, utilisez
Trouver : .*(phone=\S*?digits=1).*
Remplacer : $1
REMARQUE: . correspond à la nouvelle ligne option doit être coché.
J'utilise \S*?
au lieu de .*
à l'intérieur du motif de capture, car vous souhaitez uniquement faire correspondre le moins possible les caractères non-blancs, de phone=
à la plus proche digits
. .*
est trop gourmand et peut s'étendre sur plusieurs lignes avec l'option DOTALL activée.
METTRE À JOUR
Lorsque vous souhaitez conserver quelques multiples occurrences d’un motif dans un texte, dans Notepad ++, vous pouvez utiliser
.*?(phone=\S*?digits=1)
Remplacez par $1\n
. Avec cela, vous supprimerez toutes les sous-chaînes indésirables, à l'exception de celles qui suivent la dernière occurrence de votre sous-modèle nécessaire.
Vous devrez enlever le dernier morceau soit manuellement, soit avec
FIND: (phone=\S*?digits=1).*
REPLACE: $1
Si vous utilisez des outils tels que Notepad ++ ou EditPlus, vous pouvez utiliser le remplacement de regex suivant:
Rechercher une chaîne: ^phone=(\d+&step=1&)digits=1
Remplacer la chaîne: \1
/^phone=.+&digits=1$/
/^(?!phone=.+&digits=1$).*/gm
Disons que vous avez des données comme:
"pour le plan d'exécution [ID = 7420] au 06/12/2018 08:00:00"
vous voulez extraire uniquement une partie [ID = dddd] de milliers de lignes . Dans le Bloc-notes ++, appuyez sur ctrl + h pour ouvrir la fenêtre, cochez l'expression régulière.
Trouver quoi:
.*?(\[ID = \d+\]).*
Remplacer par:
\1
Pour votre chaîne spécifique, regex serait:
.*?(phone=.*?digits=1).*