2012-04-10 6 views
0

IStrict Finden und Muster RegExp verlieren

^\s*(\w+(\,\w+)*\s*(:|,|\()(\(|\[)?\s*) 

haben, die bei der Extraktion "Befehle" von zwei Satz Saiten wie diese

**Strict pattern** 
command:some text 
command: some text 
command,command2: some text 

**Loose pattern** 
command :some text 
command(some text) 
command, some txt 

für mehr Klarheit in meinem Problem hier ist Link funktioniert gut. http://rubular.com/r/epTIiU32Dj

Können Sie bitte zwei separate RegExp für strenge und verlieren Muster schreiben?

Also, dass mit einer RegExp, bekomme ich nur strict-Muster-Befehle und andere verwenden, ich bekomme nur verlieren-Muster-Befehle.

Immer wenn ich etwas versuche, übergehe ich jedes andere Muster. Ich bin nicht in der Lage, eine funktionierende RegExp für jedes Muster zu bekommen.

Antwort

1

Zunächst einmal können Sie Ihre regex ein bisschen durch die Verwendung von Zeichenklassen anstelle von Gruppen und Wechsel (http://www.rubular.com/r/pI7dk7qzxS) verkürzen:

^\s*(\w+(,\w+)*\s*[:,(\[]\s*) 


Hier ist das strenge Muster (http://www.rubular.com/r/xRIQuAR6TM):

^\s*(\w+(,\w+)*:\s*) 


Und hier ist das lose Muster (http://www.rubular.com/r/9ztWBYsj1a):

Beachten Sie, dass diese für die von Ihnen angegebenen Beispieldaten funktionieren (wie Sie in den Rubular-Links sehen können), aber es war schwierig, anhand der Beispieldaten und Ihrer Regex zu erkennen, ob dies alle möglichen Fälle abdecken wird. Wenn es Probleme gibt, müssen Sie die Grammatik genauer erklären.