2017-10-31 3 views
0

Ich habe unten StringRegular Expression - Erfassen Sie eine Gruppe mit spezifischem Charakter

[ string1] [ string2.0 \ string2.1 ] [ string3] 

Suche den Inhalt "string2.0 \ string2.1" zu erfassen, diese in jeder beliebigen Position in der Kette sein könnten, im Grunde ich die Gruppe aufnehmen mag, die ist innen "[]" und haben ein "\".

Ich habe diese Regex - (\[.*?\\.*?\]) aber dies fängt die ersten beiden Gruppen, wo ich nur die Zeichenfolge aus der zweiten Gruppe brauche. Auch die zweite Gruppe kann überall auftreten, z. B.

[ string2.0 \ string2.1 ] [ string1] [ string3] 
[ string1] [ string3] [ string2.0 \ string2.1 ] 

Schätzen Sie jede Hilfe!

Antwort

1

Der Trick ist, erste .*? mit einem Ausdruck zu ersetzen, die eckigen Klammern nicht enthalten ist:

\[([^[]*\\.*?)] 

Nun ist die Erfassung nicht eine offene eckige Klammer umfassen kann, so dass nur eine Gruppe aufgenommen werden würde.

Demo.