Tobias Kloth: Großbuchstaben

Beitrag lesen

Hallo Tom,

preg_match_all("/(\s[A-ZÖÄÜ]+((\s[A-ZÖÄÜ]+)|(\s))+)/", $zurdurchsuchendertext,$match);
(in $match[0] stehen dann die ganzen Namen)?
Wärst Du eventuell noch bereit, die Lösung zu kommentieren?

klar - ich hatte nur um 11Uhr Klausur, und konnte deswegen nicht früher antworten :-)

"    PHP-String-Delimiter
/    RegExp-Delimiter (Anfang, darf dann in der Expression nicht vorkommen)

doch, der Delimiter darf in der Expression vorkommen, muss aber mit \ maskiert werden (statt '/' kann man aber auch z.B. '=' nehmen)

(    Beginn der 1. Backreferenz, *was auch immer das bedeutet*

auf das was auf den Inhalt der runden Klammern "matcht" kann man im regulären Ausdruck selbst mit \1, \2, \3,...,\9 zugreifen, und bei z.B. preg_replace im 2.Parameter mit $1, $2, $3,..., $9.

\s   Whitespace (Leerzeichen, Tabs, Umbruch, ...)

ja, in dem Fall eben um die Leerzeichen zu erkennen (evtl. kann man auch Wortgrenzen suchen (\b), das habe ich aber noch nicht ausprobiert)

[A-ZÖÄÜ]   Alle Zeichen von A-Z sowie ÖAU
+    einmal oder öfter (bezieht sich auf die []
(    Beginn der 2. Backreferenz
(    Beginn der 3. Backreferenz

richtig

)    Ende der 3. Backreferenz
|    oder (? kann ich hier nichts mit anfangen)

das ist ein logisches "oder" - der Teil "((\s[A-ZÖÄÜ]+)|(\s))+" erkennt entweder ein Leerzeichen gefolgt von beliebig vielen (aber mindestens einem) Großbuchstaben ODER ein Leerzeichen - und das ganze einmal oder öfter.

(    ? noch eine Backreferenz?
\s   Whitespace
)

ich habe gerade gemerkt, dass der Teil eigentlich völlig überflüssig ist - als regulärer Ausdruck funktioniert
 /(\s[A-ZÖÄÜ]+(\s[A-ZÖÄÜ]+)+)/
genauso prächtig.

Grüße aus Nürnberg
Tobias

--
Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|