(RegExp) Begriffe die Steuerzeichen enthalten können suchen
Harlequin
- programmiertechnik
Yerf!
Ich stehe hier gerade vor einem kleinen Problem. Ich muss in einem Text Begriffe korrigieren und möchte diese dazu im Editor (PSPad) suchen. Allerdings kann ein Begriff mehrfach vorkommen und an mir nicht näher bekannten Stellen eine Tilde "~" enthalten. Ich müsste aber alle Stellen finden. Gesucht wird jeweils nach vollständigen Wörtern und case-sensitiv.
Bsp: Suche nach "Begriff"
soll finden:
Begriff
~Begriff
Beg~riff
Begri~ff
Folgendes würde gehen ist aber umständlich einzutippen (ich brauch das häufiger):
~?B~?e~?g~?r~?i~?f~?f~?
Folgendes bring PSPad in Probleme (scheinbar zu viele Treffer im Text...):
[Begriff~]
(Ein paar Treffer zu viel in der Ergebnisliste wären nicht schlimm, aber der Ausdruck matcht eindeutig viel zu viel)
Ich könnte auch noch in einer Kopie des textes alle "~" entfernen und dann die Zeilennummern als Referenz für das Originalfile verwenden, ist aber auch recht umständlich...
Hat hier jemand eine bessere Idee? Ich hab mit RegExp bisher nur oberflächlich zu tun gehabt. Kann natürlich auch sein, das es nicht besser geht...
Gruß,
Harlequin
(Hallo|Hi(ho)|Tag) Harlequin,
Ich stehe hier gerade vor einem kleinen Problem. Ich muss in einem Text Begriffe korrigieren und möchte diese dazu im Editor (PSPad) suchen. Allerdings kann ein Begriff mehrfach vorkommen und an mir nicht näher bekannten Stellen eine Tilde "~" enthalten. Ich müsste aber alle Stellen finden. Gesucht wird jeweils nach vollständigen Wörtern und case-sensitiv.
Bsp: Suche nach "Begriff"
soll finden:
Begriff
~Begriff
Beg~riff
Begri~ffFolgendes würde gehen ist aber umständlich einzutippen (ich brauch das häufiger):
~?B~?e~?g~?r~?i~?f~?f~?
Folgendes bring PSPad in Probleme (scheinbar zu viele Treffer im Text...):
[Begriff~]
Ja klar, denn das passt ("matched") auf jedes Einzelzeichen, das dem Muster entspricht.
Entschärfen könntest du das, indem du die Anzahl der Zeichen vorgibst:
[Begriff~]{7,8}
Dabei ist die 7 die Anzahl der Zeichen von "Begriff" und die 8 die Anzahl plus der Tilde.
Das wäre einfach einzutippen, funktioniert im PSPad, findet aber komischerweise auch "rrigiere"
in einem Satz wie "Ich muss in einem Text Begriffe korrigieren und möchte diese dazu im Editor (PSPad) suchen.".
(Ein paar Treffer zu viel in der Ergebnisliste wären nicht schlimm, aber der Ausdruck matcht eindeutig viel zu viel)
Hat hier jemand eine bessere Idee? Ich hab mit RegExp bisher nur oberflächlich zu tun gehabt.
PSPad hat übrigens im Suchen-Dialog direkt hinter der Eingabezeile einen Button mit einem Fragezeichen drauf.
Der ist zumindest am Anfang der RegEx-Karriere sehr hilfreich ...
Kann natürlich auch sein, das es nicht besser geht ...
Genauer einzugrenzen geht sicherlich, aber ob der entsprechende reguläre Ausruck dann leichter einzutippen wäre,
da hab ich meine Zweifel.
MffG
EisFuX
Yerf!
[Begriff~]
Ja klar, denn das passt ("matched") auf jedes Einzelzeichen, das dem Muster entspricht.Entschärfen könntest du das, indem du die Anzahl der Zeichen vorgibst:
[Begriff~]{7,8}
Dabei ist die 7 die Anzahl der Zeichen von "Begriff" und die 8 die Anzahl plus der Tilde.
Jetzt wirds klarer, an die Anzahl hab ich nicht gedacht. So ist es auf jeden fall leichter zu tippen als mit "~?" nach jedem Zeichen.
Das wäre einfach einzutippen, funktioniert im PSPad, findet aber komischerweise auch "rrigiere"
in einem Satz wie "Ich muss in einem Text Begriffe korrigieren und möchte diese dazu im Editor (PSPad) suchen.".
PSPad scheint hier die Option "nur ganze Wörter" zu ignorieren. Aber da gabs doch auch etwas von RegExp®: \b[Begriff~]{7,8}\b
Genauer einzugrenzen geht sicherlich, aber ob der entsprechende reguläre Ausruck dann leichter einzutippen wäre,
da hab ich meine Zweifel.
Es ist leichter ein paar Zeilen mehr in der Ergebnisliste durchzuscrollen, als komplexe Ausdrücke einzutippen ;-)
Mit der Anzahl funktionierts jetzt eigentlich ganz gut, danke.
Gruß,
Harlequin
gudn tach!
[Begriff~]{7,8}
ich weiss nicht, ob's klar geworden ist, deswegen noch ein kommentar von mir.
[Begriff~] ist dasselbe wie [Begrif~] oder [~Befgir], da mit den eckigen klammern nur zeichenklassen definiert werden. quantifizierer wie +, * oder {n,m} koennen dabei _keine_ reihenfolge vorgeben.
du hast dein genaues vorhaben noch nicht beschrieben, aber wenn wirklich bloss darum geht, alle woerter herauszufischen, die in einer vorgegebenen liste stehen, wobei zusaetzliche tilden erlaubt sind, dann wuerde ich ein kleines script, z.b. in perl vorschlagen. in etwa sowas:
@alle_woerter = split /[^a-zA-Z]+/;
@alle_woerter_tildenfrei = map s/~//g, @alle_woerter;
diese beiden arrays synchron durchlaufen und dabei die elemente von @alle_woerter_tildenfrei nach @gesuchte_woerter abklappern.
alternativ kann man sowas auch in texteditoren bewerkstelligen, die per scriptsprache beliebig erweiterbar sind, z.b. vim oder emacs.
prost
seth
Yerf!
ich weiss nicht, ob's klar geworden ist, deswegen noch ein kommentar von mir.
[Begriff~] ist dasselbe wie [Begrif~] oder [~Befgir], da mit den eckigen klammern nur zeichenklassen definiert werden. quantifizierer wie +, * oder {n,m} koennen dabei _keine_ reihenfolge vorgeben.
Dass ich damit einige "false positives" bekomme ist mir schon klar. Wichtig ist nur, dass ich sicher alle vorkommen des gesuchten Begriffes finde, egal an welcher Stelle eine Tilde im Begriff steht.
du hast dein genaues vorhaben noch nicht beschrieben, aber wenn wirklich bloss darum geht, alle woerter herauszufischen, die in einer vorgegebenen liste stehen, wobei zusaetzliche tilden erlaubt sind, dann wuerde ich ein kleines script, z.b. in perl vorschlagen. in etwa sowas:
Ich muss in einer langen Textliste alle Vorkommen eines Begriffes finden um dort den Text händisch zu korrigieren. Das ganze sind Ressource-Strings für eine GUI und die Tilde kennzeichnet den Accelerator (für ALT+Taste). PSPad liefert mir mit der Suche eine schöne Liste aller Vorkommen, die ich dann per Mausklick direkt anspringen kann. Von daher reciht die etwas ungenaue Version.
alternativ kann man sowas auch in texteditoren bewerkstelligen, die per scriptsprache beliebig erweiterbar sind, z.b. vim oder emacs.
Wenn ich sowas noch öfter und in anderen Varianten brauche, werde ich über einen Umstieg auf einen entsprechenden Editor nachdenken.
Gruß,
Harlequin