2012-02-20 4 views
0

Je suis très nouveau dans le Bloc-notes ++ et j'ai besoin d'un peu d'aide pour les fonctions Rechercher et Remplacer. J'ai un code pour la machine CNC qui ressemble à ceci:Notepad ++ Syntaxe Rechercher et remplacer, aide requise

G1 X0.625 Z1.242 F500.0 
G1 Z0.099 A358.475 F500.0 
G1 X0.542 Z1.247 F500.0 
G1 Z0.100 A356.949 F500.0 
G1 X0.458 Z1.254 F500.0 
G1 Z0.102 A355.424 F500.0 
G1 X0.375 Z1.263 F500.0 

Je dois trouver chaque ligne qui contient X et remplacez la valeur de F500.0 à F5.0. Quelle syntaxe devrais-je utiliser? Merci d'avance.

Répondre

0

Hit ctrl+h dans le premier champ mis ce que vous voulez trouver, dans la deuxième place dans ce que vous voulez le remplacer par.

1

Rechercher: (X.*)F500\.0

et remplacer par: \1F5.0

+0

Mieux que le mien. –

+0

@TonyMiller: Juste un peu plus simple. Mais le vôtre peut mieux fonctionner selon les cas. – Toto

+0

Comme noté sur la réponse de Tony, Notepad ++ ne supporte pas la syntaxe étendue. Plus particulièrement '()' groupements. –

2

Je pense que cela va fonctionner, mais cela dépend de la variabilité de vos données:

(G1[ ]+X.+[ ]+[A-Z0-9.]+[ ]+)F500\.0 

et les remplacer par

\1F5.0 

Cela ramasse tout à e gauche de F500.0 (le. est d'obtenir une période littérale. Je place un G1 littéral, puis des espaces, puis X suivi de tout, puis des espaces, puis des charaters de mots et des nombres et des périodes répétés, puis finalement le F500.0.

Je remplace cela par \ 1 qui est la substance recueillie entre parenthèses suivie de F5.0.

Référence: NotePad++ Regular Expression Syntax

Mise à jour: Ajout d'un lien vers notepad ++ Expression régulière Syntaxe

+0

Ne fonctionne pas, car Notepad ++ ne prend en charge rien d'autre que BRE. –

+0

pourquoi mettez-vous "l'espace" dans une classe de caractères? C'est juste un caractère, au lieu de [], vous devriez utiliser \ s. – sweaver2112

+0

J'ai utilisé l'espace entre parenthèses car j'utilisais rapidement l'aide de la syntaxe d'expression régulière NotePad ++ et je ne voyais pas de classe de caractères d'espaces. Il en a un, bien sûr. –

-2

Notepad ++ utilise basic regular expression syntax. Donc, vous allez avoir beaucoup de problèmes en essayant de l'utiliser comme une expression régulière compatible Perl (PCRE).

La meilleure façon d'y parvenir est d'utiliser un outil conçu pour ces types de tâches. Sed, ou un perl un paquebot. Par exemple:

sed -i -r 's/(X.*)F500\.0/\1F5.0/g' yourFile 

Le commutateur -i est en place pour l'édition et -r est la syntaxe regex prolongée. Bien sûr, mettre en place sed sur Windows est irritant. Donc, vous pouvez avoir plus de chance avec un petit script python ou perl. Un autre choix est une macro notepad ++.

Edit:

Comme me fit remarquer par M42, notepad ++ ne fait de groupes de soutien, kind of.

+1

Sed? Vraiment? Les éditeurs de texte sont juste FINE pour la recherche/remplacement, c'est un peu ce qu'ils font, après tout, c'est juste que certains sont meilleurs que d'autres. – sweaver2112

+0

@ sweaver2112 La recherche/remplacement directe n'est pas un problème. Une fois que vous passez dans la regex, vous commencez à frapper des incohérences. Et les gens essaient d '"analyser" leur texte avec une seule regex. Et je me demande pourquoi ils correspondent à des choses auxquelles ils ne s'attendaient pas. Et essayez d'inclure des constructions logiques dans le remplacement. Je vous dirige vers un [exemple d'où cela peut mener] (http://stackoverflow.com/a/1732454/724357). Ni 'sed' ni' macros' ne correspondent vraiment là où cela mène, je donnais juste des options (allez avec les scripts ...) –

+1

-1. OP explicitement demandé via NotePad ++. Si vous voulez répondre, répondez à ce qui vous est demandé en premier, puis proposez des alternatives. –

Questions connexes