Regex

Hallo erstmal an die Wissenden,

vielleicht kann mir bitte jemand bei der regex für folgende Fälle helfen:

Wörter die mind. 25 Zeichen lang sind und entweder mit Klein- oder Großbuchstaben anfangen (damit möchte ich Wörter die evtl. einer Zwangstrennung bedürfen)

fast wie oben aber Wörter die max. 2 Zeichen lang sind (groß oder klein)
[a-z] {1,2} mit nur der 1 und nur klein oder groß krieg ich das hin, mit der 2 dabei wollte es nicht)

tja, und dann noch Satzzeichen(. , ; ! ?, Anführungszeichen usw) finden und ersetzen bei denen das folgende Leerzeichen fehlt und/oder davor ein Leerzeichen steht -
. und ? sind in der regex wohl Platzhalter und machen einfach nicht was ich will.
,[a-z]
replace
,_\1

Sollte hier nicht das \1 den folgenden Buchstaben nach dem , auch wieder bringen? Bei mir stand dann plötzlich
, \1 :frowning:

und kann ich bestimmte Wörter ausschließen?
ich suche z.B.
mein[a-z]
dann finde ich natürlich auch meine/s/r/n/m und diese würde ich gerne ausschließen
oder kann ich gar nach mein/e/s/r/n/m[a-z] suchen ?
(ich suche damit fehlende Wortabstände zwischen mein…)

Viele Fragen, aber ich hoffe jede Lösung bringt mich dem allgemeinen Verständnis näher.

und ja, ich kenn die Seite die regex erklärt aber irgendwie übersteigt es noch die Denkfähigkeit einer etwas älteren Dame die gerade mit html und regex beginnt. :wink:

Lieben Dank schon mal
Grüße Bröselchen

Hallo!

Kurze Rückfrage. Wo findet das alles statt? Programmiersprache, Editor etc.?

Fortranner

sorry, vergessen.

Sigil - zur Bearbeitung eines epub (bereits in mehrere html gesplittet)
oder auch Notepad++ wenn ich das Buch selbst in html gewandelt habe.

Grüße Bröselchen

Hallo,

Sigill kenne ich zwar nicht, aber reguläre Ausdrücke ganz gut.

Wörter die mind. 25 Zeichen lang sind und entweder mit Klein-
oder Großbuchstaben anfangen (damit möchte ich Wörter die
evtl. einer Zwangstrennung bedürfen)

vermutlich funktioniert: [A-Za-z][a-z]{24,}

fast wie oben aber Wörter die max. 2 Zeichen lang sind (groß
oder klein)
[a-z] {1,2} mit nur der 1 und nur klein oder groß krieg ich
das hin, mit der 2 dabei wollte es nicht)

Das Leerzeichen nach der eckigen Klammer zu sieht etwas suspekt aus, aber sonst…

. und ? sind in der regex wohl Platzhalter und machen einfach
nicht was ich will.

Das, also die Interpretation als Spezialzeichen, repariert man über einen vorangestellten backslash

,[a-z]
replace
,_\1
Sollte hier nicht das \1 den folgenden Buchstaben nach dem ,
auch wieder bringen?

Nein, damit es das tut, also eine Ersetzungsgruppe bildet, muss man im Suchmuster ein paar runde Klammern spendieren, also nach ,([a-z]) suchen. Je nach Tool könnte die Zählung auch mit \0 anfangen.

und kann ich bestimmte Wörter ausschließen?
ich suche z.B.
mein[a-z]
dann finde ich natürlich auch meine/s/r/n/m und diese würde
ich gerne ausschließen

Einen Ausschluss erreicht man nur über zusätzliche Kriterien, die die unerwünschten Wörte nicht erfüllen, wie zum Beispiel den Wortende-Marker, bei meinem Editor \>.

oder kann ich gar nach mein/e/s/r/n/m[a-z] suchen ?

Ja, über meine[srnm]?[a-z]

Grüße, guidot

Hallo,

ein Nachtrag

Wörter die mind. 25 Zeichen lang sind und entweder mit Klein-
oder Großbuchstaben anfangen (damit möchte ich Wörter die
evtl. einer Zwangstrennung bedürfen)

Die zweite Zahlenangabe muss da sein, vermutlich funktioniert:
[A-Za-z][a-z]{24,100}

fast wie oben aber Wörter die max. 2 Zeichen lang sind (groß
oder klein)
[a-z] {1,2} mit nur der 1 und nur klein oder groß krieg ich
das hin, mit der 2 dabei wollte es nicht)

Das Leerzeichen nach der eckigen Klammer zu sieht etwas
suspekt aus, aber sonst…

Das ist wohl genau das Problem: So, wie es da steht, dürfen ein bis zwei Leerzeichen auf einen Buchstaben folgen, d. h. für das Gewünschte muss das Leerzeichen hinter die geschweiften Klammern.

Grüße, guidot

Hallo,

[a-z] {1,2}

Jetzt staune ich aber doch: Umlaute, Lateinische Buchstaben mit Akzenten usw. duerfen bei dir nicht Bestandteil eines Wortes sein?

Falls doch: bei PCRE hilft
\pL beliebiger Buchstabe (Letter)
\p{Lu} Grossbuchstabe (Letter upper case)
\p{Ll} Kleinbuschtabe (Letter lower case)

Siehe http://perldoc.perl.org/perlunicode.html#Unicode-Cha… fuer mehr Informationen.

Ich weiss allerdings nicht, wie gut das Tool, was du verwendest, die Unicode-Zeichenklassen unterstuetzt.

Gruesse,
Moritz

Danke :smile:

Jetzt bin ich wieder ein Stück weiter.

[a-zA-Z] hilft mir viel und die runden und die runden Klammern sowieso :smile:

Wenn Sigil jetzt noch eine Rechtschreibprüfung abbekäme wäre ich glücklich.

Noch mal Danke
Bröselchen