RegEx Ausdruck

hehe_me

Mitglied
Hallo,

kann mir jmd mit einem RegEx Ausdruck behilflich sein. Und zwar würde ich gerne einen String wie:

"test1 test2" test3 test4 "test5 und test6"

folgend aufspalten:

test1 test2
test3
test4
test5 und test6

Wie sehe daha ein RegEx aus?
 

Parantatatam

mag Cookies & Kekse
Ich interpretiere das so, dass in erster Linie getrennt wird, an der Stelle, wo es ein Leerzeichen gibt. Jedoch dann nicht, wenn der Text zwischen zwei Anführungszeichen ist. Sehe ich das so richtig? Wenn ja, dann sollte folgendes RegEx dir helfen:
PHP:
$pattern = '/([^ "]+)|"([^"]+)"/';
$content = '"test1 test2" test3 test4 "test5 und test6"';
$result  = array();

preg_match_all($pattern, $content, $matches);

foreach (array_keys($matches) as $i) {
  $result[$i] = empty($matches[1][$i]) ? $matches[2][$i] : $matches[1][$i];
}
 
Zuletzt bearbeitet:

hehe_me

Mitglied
Hi,

danke erstmal für die Antwort.

da ich das ich in Hochkommas schreiben muss:

Code:
"/([^ \"]+)|\"([^\"]+)\"/"

Ich habe das so umschrieben, wobei das dann natürlich nicht mehr funktioniert...
Ich muss auch dazu schreiben, dass ich den Code auch in Java verwende..
Irgendeine Idee?
 

Parantatatam

mag Cookies & Kekse
Naja, das Problem ist, dass du die Backslashes noch maskieren musst, sprich, du musst vor die Backslashes noch ein weiteres schreiben, so dass es dann so aussieht:
Code:
/([^ \\"]+)|\\"([^\\"]+)\\"/
 

hehe_me

Mitglied
Jepp, danke in PHP funktioniert es Perfekt.

Habe es als Pattern folgend geschrieben:

Code:
$pattern = "/([^ \"]+)|\"([^\"]+)\"/";

In Java umgeschrieben funktioniert es leider nicht ganz..
 

hehe_me

Mitglied
Nun ja in PHP klappt es ja und da habe ich es auch gebraucht von daher danke und erledigt.
Ich frage noch im Java - Bereich ;)