2016-05-26 2 views
0

Wenn ich einen regulären Ausdruck habe, der einen | Operator hat, der zwei mögliche Muster trennt. Kann ich herausfinden, welches Muster zu meiner Saite passt?Wie kann ich herausfinden, welcher andere reguläre Ausdruck mit meiner Zeichenfolge übereinstimmt?

Zum Beispiel, wenn ich das Muster ([cC]at|[dD]og) habe und ich finde eine Übereinstimmung in der Zeichenfolge clifford is a dog. Kann ich dann zurückblicken, um zu sehen, dass das Muster [dD]og das erfolgreiche Spiel war und nicht die Alternative: [cC]at.

Ich verstehe, dass ich versuchen könnte, jedes alternative Muster individuell anzupassen und dann nur die erfolgreichen zu nehmen, aber ich frage mich, ob es eine andere Lösung gibt, die keinen Match-Versuch für jedes Muster erfordert (ich hoffe zutreffen) dies in einer Situation, wo ich versuche, auf einmal mehrere hundert Muster entsprechen)

+1

halten sie in zwei getrennten Gruppen '([cC] at) | ([dD] og)' – rock321987

Antwort

1

Sie zwei verschiedene Gruppen verwenden können und seinen Index überprüfen, wie folgt aus:

([cC]at)|([dD]og) 

Regular expression visualization

Regex demo

Spiel Informationen

MATCH 1 
    Group 2. [14-17] `dog` 
MATCH 2 
    Group 1. [33-36] `cat` 

Btw, wenn Sie aus irgendeinem Grund zu einer Gruppe haben die ganze Wechsel Sie eine nicht einfangende Gruppe wie diese verwenden:

(?:([cC]at)|([dD]og)) 
+0

Danke @Federico, Sie haben meine Frage perfekt beantwortet. Ich kann nicht glauben, dass ich nicht denke, Gruppen zu verwenden – bunji

+0

@bunji lol, froh, zu helfen –

Verwandte Themen