2017-02-09 7 views
2

ich einen regulären Ausdruck haben wollen zusammen, die unten:Regex passt eine Klammer Aufzählungspunkt

(1) hallo (2) Welt

Ich möchte für 2 Spiele zu Schleife, eine (1) hallo und der andere ist (2) Welt für jedes Spiel, (1) ist die erste Gruppe "Hallo" ist die zweite

Ich versuchte (\(\d+\))(.*?) aber fehlgeschlagen.

+1

Könnten Sie bitte die Umwelt/regex Geschmack genau? Mit welchem ​​Code verwendest du die Regex? Übrigens, in den meisten Fällen können Sie sich einfach mit '(? = \ (\ D + \))' teilen, oder müssen Sie auf jeden Fall 2 Capture-Gruppen haben? –

Antwort

2

Wenn Sie passende Ansatz verwenden müssen separat haben Zugriff auf die (n) und hello Werte, müssen Sie einen regulären Ausdruck verwenden, wie

(\(\d+\))([^(]*(?:\((?!\d+\))[^(]*)*) 

die regex demo See. Das obige Muster ist ein entrolltes Äquivalent von (?s)(\(\d+\))((?:(?!\(\d+\)).)*).

Einzelheiten:

  • (\(\d+\)) - Capturing Gruppe 1: (, 1+ Ziffern, )
  • ([^(]*(?:\((?!\d+\))[^(]*)*) - Capturing Gruppe 2:
    • [^(]* - 0+ Zeichen andere als (
    • (?:\((?!\d+\))[^(]*)* - null oder mehr sequen ces von:
      • \((?!\d+\)) - ein wörtlichen ( nicht mit 1+ Ziffern gefolgt und )
      • [^(]* - 0+ Zeichen andere als (.
+0

hallo, wie hast du mehrere Treffer wie Looping erfassen? –

+0

@AbdulHameed: Sorry, ich bekomme nicht das * mehrere Treffer wie looping *. Ist etwas unklar in meiner Mustererklärung? Bitte lassen Sie es mich wissen, damit ich es klären kann. –

+0

Ich sah von diesem Link http://www.rexegg.com/regex-capture.html#spawn_groups, dass wir Capture-Gruppen nicht automatisch generieren können .. aber Ihre ist in der Lage, es zu tun. das ist, was ich wissen will, wie .. –