Variablen am Anfang eines String herausfiltern
bearbeitet von
Hallo!
> Miene eigentliche Frage lautet nun also: **Wie sucht man nach dem ersten Leerzeichen dem kein Kommata oder Schrägstrich vorangestellt ist?**
Oder: Wie findet man einzelne Wörter einer Kette von Wörtern, die an den Start des Strings geleimt ist und durch ein Komma + Leerzeichen gegliedert ist.
Ein regex Muster könnte so aussehen, falls ich das Problem richtig verstanden habe:
~~~
\G(?:, )?\K[\w-]+
~~~
- Der [`\G` Anker](http://www.regular-expressions.info/continue.html) ist sozusagen das Bindemittel. Er passt auf den Start des Strings und die Stelle, an welcher ein vorrangegangener Treffer endet.
- `(?:, )?` Eine [optionale](https://msdn.microsoft.com/en-us/library/3206d374%28v=vs.110%29.aspx) sog. [non-capturing group](http://www.regular-expressions.info/brackets.html), welche ein Komma mit einem nachgestellten Leerzeichen enthält. Optional, da das Komma mit Leerzeichen auf den Anfang nicht zutrifft.
- [`\K` Escape-Sequenz](http://www.rexegg.com/regex-php.html#K) setzt den Anfang des Treffers zurück.
- `[\w-]+` Eine [Zeichenklasse](http://www.regular-expressions.info/charclass.html), die [Wortzeichen](http://www.regular-expressions.info/shorthand.html) und ein Minus enthält. Jeweils 1 oder mehr hiervon.
Anzuwenden mit [`preg_match_all`](http://php.net/manual/de/function.preg-match-all.php). Hier ein [PHP Test auf eval.in](https://eval.in/580441) oder [regex Test auf regex101](https://regex101.com/r/gV2fP7/1).
Variablen am Anfang eines String herausfiltern
bearbeitet von
Hallo!
> Miene eigentliche Frage lautet nun also: **Wie sucht man nach dem ersten Leerzeichen dem kein Kommata oder Schrägstrich vorangestellt ist?**
Oder: Wie findet man einzelne Wörter einer Kette von Wörtern, die an den Start des Strings geleimt ist und durch ein Komma + Leerzeichen gegliedert ist.
Ein regex Muster könnte so aussehen, falls ich das Problem richtig verstanden habe:
~~~
\G(?:, )?\K[\w-]+
~~~
- Der [`\G` Anker](http://www.regular-expressions.info/continue.html) ist sozusagen das Bindemittel. Er passt auf den Start des Strings und die Stelle, an welcher ein vorrangegangener Treffer endet.
- `(?:, )?` Eine [optionale](https://msdn.microsoft.com/en-us/library/3206d374%28v=vs.110%29.aspx) sog. [non-capturing group](http://www.regular-expressions.info/brackets.html), welche ein Komma mit einem nachgestellten Leerzeichen enthält.
- [`\K` Escape-Sequenz](http://www.rexegg.com/regex-php.html#K) setzt den Anfang des Treffers zurück.
- `[\w-]+` Eine [Zeichenklasse](http://www.regular-expressions.info/charclass.html), die [Wortzeichen](http://www.regular-expressions.info/shorthand.html) und ein Minus enthält. Jeweils 1 oder mehr hiervon.
Anzuwenden mit [`preg_match_all`](http://php.net/manual/de/function.preg-match-all.php). Hier ein [PHP Test auf eval.in](https://eval.in/580441) oder [regex Test auf regex101](https://regex101.com/r/gV2fP7/1).
Variablen am Anfang eines String herausfiltern
bearbeitet von
Hallo!
> Miene eigentliche Frage lautet nun also: **Wie sucht man nach dem ersten Leerzeichen dem kein Kommata oder Schrägstrich vorangestellt ist?**
Oder: Wie findet man einzelne Wörter einer Kette von Wörtern, die an den Start des Strings geleimt ist, durch ein Komma + Leerzeichen gegliedert ist und durch ein Leerzeichen beendet wird.
Ein regex Muster könnte so aussehen, falls ich das Problem richtig verstanden habe:
~~~
\G(?:, )?\K[\w-]+
~~~
- Der [`\G` Anker](http://www.regular-expressions.info/continue.html) ist sozusagen das Bindemittel. Er passt auf den Start des Strings und die Stelle, an welcher ein vorrangegangener Treffer endet.
- `(?:, )?` Eine [optionale](https://msdn.microsoft.com/en-us/library/3206d374%28v=vs.110%29.aspx) sog. [non-capturing group](http://www.regular-expressions.info/brackets.html), welche ein Komma mit einem nachgestellten Leerzeichen enthält.
- [`\K` Escape-Sequenz](http://www.rexegg.com/regex-php.html#K) setzt den Anfang des Treffers zurück.
- `[\w-]+` Eine [Zeichenklasse](http://www.regular-expressions.info/charclass.html), die [Wortzeichen](http://www.regular-expressions.info/shorthand.html) und ein Minus enthält. Jeweils 1 oder mehr hiervon.
Anzuwenden mit [`preg_match_all`](http://php.net/manual/de/function.preg-match-all.php). Hier ein [PHP Test auf eval.in](https://eval.in/580441) oder [regex Test auf regex101](https://regex101.com/r/gV2fP7/1).
Variablen am Anfang eines String herausfiltern
bearbeitet von
Hallo!
> Miene eigentliche Frage lautet nun also: **Wie sucht man nach dem ersten Leerzeichen dem kein Kommata oder Schrägstrich vorangestellt ist?**
Oder: Wie findet man einzelne Wörter einer Kette von Wörtern, die an den Start des Strings geleimt ist, durch ein Komma + Leerzeichen gegliedert ist und durch ein Leerzeichen beendet wird.
Ein regex Muster könnte so aussehen, falls ich das Problem richtig verstanden habe:
~~~
\G(?:, )?\K[\w-]+
~~~
- Der [`\G` Anker](http://www.regular-expressions.info/continue.html) ist sozusagen das Bindemittel. Er passt auf den Start des Strings und die Stelle, an welcher ein vorrangegangener Treffer endet.
- `(?:, )?` Eine [optionale](https://msdn.microsoft.com/en-us/library/3206d374%28v=vs.110%29.aspx) sog. [non-capturing group](http://www.regular-expressions.info/brackets.html), welche ein Komma mit einem nachgestellten Leerzeichen enthält.
- [`\K` Escape-Sequenz](http://www.rexegg.com/regex-php.html#K) setzt den Anfang des Treffers zurück.
- `[\w-]+` Eine [Zeichenklasse](http://www.regular-expressions.info/charclass.html), die [Wortzeichen](http://www.regular-expressions.info/shorthand.html) und ein Minus enthält. Jeweils 1 oder mehr hiervon.
[PHP Test auf eval.in](https://eval.in/580441) oder [regex Test auf regex101](https://regex101.com/r/gV2fP7/1)