Forum: Platinen Eagle-Bibliotheken mit Notepad++ und regulären Ausdrücken bearbeiten


von Volker (Gast)


Lesenswert?

Hallo zusammen,

ich möchte mit Notepad++ Eagle Bibliotheksdateien bearbeiten.

Konkret möchte ich über die Suchfunktion mit regulären Ausdrücken, als 
Beispiel, folgende Zeilen finden:

size="1.25" layer="25">&gt;NAME</text>
size="1.2" layer="25">&gt;NAME</text>
size="1" layer="25">&gt;NAME</text>

Genau geht es um den Wert in Size. Ich suche nach einem Ausdruck mit dem 
ich alle size-Werte finden kann. Problematisch finde ich die 
unterschiedliche Anzahl von Zeichen in den Hochkommas.

Im Prinzip: Finde alle Zeilen mit beliebigen Werten in den Hochkommas 
von size.

Vielen Dank vorab für eure Hilfe.

Gruß

Voler

: Verschoben durch Admin
von Cyblord -. (cyblord)


Lesenswert?

Wie war jetzt die Frage? Du willst dass dir jemand den regulären 
Ausdruck dafür liefert?
Schau doch mal hier: 
http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck

Tip: Der Punkt steht für ein beliebiges Zeichen und ein Stern hintendran 
sagt, dass es beliebig oft (auch niemals) vorkommen darf. Ein + hingegen 
verlangt dass es min. 1 mal vorkommt.
So und jetzt kannst du doch sowas machen wie:


size=".*"

Dazu noch die Anführungszeichen ordentlich escapen und fertig.

Natürlich kannst du statt dem Punkt das ganze auch eingrenzen auf 
zahlen, oder mit Klassen auch auf Zahlen und Punkte usw.

gruß cyblord

: Bearbeitet durch User
von Moritz A. (moritz_a)


Lesenswert?

cyblord ---- schrieb:
> size=".*"

REs sind greedy, daher wird das auf
"1.25" layer="25"
matchen

Ich schlage daher
size="[0-9.]+"
vor.

Zum reinen auffinden wohl noch irrelevant, aber wenn es ums ersetzen 
geht nicht mehr:
1
-> echo 'size="1.2" layer="25">&gt;NAME</text>' | sed -re 's/size=".*"/size="12"/'
2
size="12">&gt;NAME</text>
3
-> echo 'size="1.2" layer="25">&gt;NAME</text>' | sed -re 's/size="[0-9.]+"/size="12"/'
4
size="12" layer="25">&gt;NAME</text>

von Volker (Gast)


Lesenswert?

Hallo zusammen,

danke für eure Antworten. Der Ausdruck funktioniert.

@ Moritz: Der Ausdruck

[0-9.]+

bedeutet dann, dass Zeichen von 0-9 mindestens einmal und beliebig oft 
in den Hochkommas vorkommen können, oder?
Welche Funktion hat der Punkt hinter der 9?

Gruß

Volker

von Cyblord -. (cyblord)


Lesenswert?

Volker schrieb:
> @ Moritz: Der Ausdruck
>
> [0-9.]+
>
> bedeutet dann, dass Zeichen von 0-9 mindestens einmal und beliebig oft
> in den Hochkommas vorkommen können, oder?
> Welche Funktion hat der Punkt hinter der 9?

> Der Punkt steht für ein beliebiges Zeichen

Ansonsten ist der Ausdruck von Moritz sehr schön. Mit dem Greedy stimmt 
natürlich. Man könnte auch explizit die Anführungszeichen ausnehmen. 
Aber so ists eleganter.
Wollte dem TE nur den Weg aufzeigen.

gruß cyblord

: Bearbeitet durch User
von Moritz A. (moritz_a)


Lesenswert?

Volker schrieb:
> bedeutet dann, dass Zeichen von 0-9 mindestens einmal und beliebig oft
> in den Hochkommas vorkommen können, oder?
> Welche Funktion hat der Punkt hinter der 9?

Fast ;)

Im Normalfall bedeutet der . "ein beliebiges Zeichen", wenn man nur den 
Punkt haben wollte müsste man \. schreiben.

Mit den [] definiere ich aber eine Zeichenmenge, da gelten leicht andere 
Regeln, in diesem Fall enthält sie:
0-9  alle Zahlen von 0-9
.    einen Punkt

+ ist, wie du Richtig erkannt hast, ein Quantifier für "mindestens 
einmal".

Damit würde es auch auf 11.12.13 matchen, aber da ich hier davon ausgehe 
dass Eagle sein XML ordentlich aufbaut habe ich darüber hinweggesehen, 
da es sonst einiges komplizierter würde.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.