2016-03-22 11 views
0

Ich möchte die Zeichenfolge für Komma (,) oder & teilen. Das ist einfach, aber ich möchte die Übereinstimmung für jeden Inhalt zwischen Klammern stoppen. Zum Beispiel, wenn ich laufe aufRegex Übereinstimmung, die bestimmte Muster ausschließen

sleeping , waking(sit,stop) 

es

Dank im Voraus nur eine Spalte und zwei Elemente sein muß

+2

Können Sie Ihre Frage bearbeiten und mehr Beispieleingabe und erwartete Ausgaben hinzufügen? Zum Beispiel hast du '&' erwähnt, wie sollte es sich verhalten? –

Antwort

1

Dies ist ein perfektes Beispiel für den (*SKIP)(*FAIL) Mechanismus PCRE (und damit PHP) bietet an.
Sie könnten mit dem folgenden Code kommen:

<?php 
$string = 'sleeping , waking(sit,stop)'; 
$regex = '~\([^)]*\)(*SKIP)(*FAIL)|[,&]~'; 
# match anything between (and) and discard it afterwards 
# instead match any of the characters found on the right in square brackets 
$parts = preg_split($regex, $string); 
print_r($parts); 
/* 
Array 
(
    [0] => sleeping 
    [1] => waking(sit,stop) 
) 
*/ 

?> 

Dieser jede , oder & aufgeteilt wird, die nicht in den Klammern ist.

Verwandte Themen