2009-07-17 3 views
3

Ich brauche ein Bündel von Bild-URLs aus einem Dokument zu trennen, in dem die Bilder mit Namen wie diese verbunden sind:Warum fragt Textpad, ob Sie die POSIX-Syntax für reguläre Ausdrücke verwenden möchten?

bellpepper = "http://images.com/bellpepper.jpg" 
cabbage = "http://images.com/cabbage.jpg" 
lettuce = "http://images.com/lettuce.jpg" 
pumpkin = "http://images.com/pumpkin.jpg" 

Ich möchte alle Texte mit Ausnahme der URLs aus der Datei entfernen, indem Sie die Variablennamen zu löschen , Gleichheitszeichen und doppelte Anführungszeichen, also habe ich eine neue Datei, die nur eine Liste von URLs ist, eine pro Zeile.

Ich habe versucht various ways der Identifizierung der Nicht-URL-Daten mit regulären Ausdrücken in Textpad, indem Sie das Kontrollkästchen "Regular Expression" im Dialogfeld Suchen, aber Textpad scheint keine von ihnen zu mögen.

Unter

Configure->Preferences->Editor 

gibt es eine Option:

"Use POSIX regular expression syntax" 

Betreffs, was dagegen?

Ist es möglich, dass meine Probleme beim Ausführen dieser Regex-Operation mit einer Eigenart der Textpad-Implementierung von Regex zu tun haben?

Antwort

4

Die POSIX-Alternative ist im Gegensatz zum TextPad-Standard. Vom Suchen/Ersetzen-Hilfe doc:

TextPad ist auf POSIX-Standard P1003.2 reguläre Ausdrücken basiert, aber die Syntax, die von POSIX sein kann, oder UNIX erweiterte reguläre Ausdrücke (Standardeinstellung).

der Job in TextPad zu erledigen, verwenden Sie die folgenden Schritte aus:

Find in: ^[^"]*"\([^"]*\)" 
Replace with: \1 

edit:

den Ausdruck zu brechen:

^ - start of line 
[^"]* - in a set the caret^is for negation, 
     so a greedy match of anything that is not a " 
     in this case, everything up to the first quote 
" - the first quote per line in your source text 
\(...\) - puts together a group that can be referenced later 
[^"]* - same explanation as above, this time matching the url in question 
" - the last quote on the line 

Auch der Suche durch Das Hilfedokument zu Regex in TextPad enthält ein Diagramm mit rechtlichen Ausdrücken, in denen sowohl der Defau als auch der Text aufgelistet sind lt 'und die' POSIX 'Versionen nebeneinander. Der einzige Unterschied scheint das Entkommen der Grouping-Parens () und der Occurance Curlies {} im Default und der fehlenden Escaping in der POSIX-Version zu sein.

Mit dem im Verstand, in TextPad den Job zu erledigen mit der ‚POSIX verwendet Syntax für reguläre Ausdrücke‘ geprüft Option, tauschen Sie das oben ‚Find in‘ Ausdruck mit folgendem aus:

Find in: ^[^"]*"([^"]*)" 
+0

Das ist so cool. Es funktionierte nicht mit der POSIX-Option, aber es funktionierte, als ich es abstellte. Genial. Vielen Dank. Ich wünschte, ich hätte verstanden, was du da gemacht hast. – boysenberry

+0

@boysenberry, ich habe meine Antwort mit einigen Details aktualisiert. – akf

+0

Das ist erstaunlich. Vielen Dank für das Erklären. Hervorragende Erklärung! – boysenberry

3

Neben POSIX gibt es auch Perl Stil reguläre Ausdrücke.

+1

Ich glaube nicht, dass Sie Perl-Regex in TextPad verwenden können – akf

2

dem ursprünglichen Grunde Reguläre Ausdrücke, wie sie auf "sed" gefunden werden können, haben einige Unterschiede zu dem, was wir am häufigsten verwenden. Beispiel: Sie verwenden \( und \), um anstelle von (und) Gruppen anzugeben, und es gibt keinen "+" - Modifizierer.

Beachten Sie auch zu der verknüpften Frage, dass Ihr "*" außerhalb der Klammer statt innen ist. Das bedeutet, dass nur ein Char in der ersten Gruppe gefunden wird.