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:|