2016-04-02 12 views
2

Ich erwarte, dass dies sehr einfach ist, aber ich kann nicht herausfinden, wie man das optionale Zeichen Paare in regex zusammenbringt. Reguläre Ausdrücke sind nicht etwas, was ich jemals zuvor tun musste.Gekoppelte Zeichen in regulärem Ausdruck

Ich möchte "= N", "= B", "= R" oder "= Q" in einer Zeichenfolge optional übereinstimmen - aber wenn sie erscheinen, müssen sie mit dem Gleichgestellten gepaart erscheinen Schild. Also =? [NBRQ]? funktioniert nicht für mich, weil jemand "N" ohne das zugehörige Gleichheitszeichen eingeben könnte. Also muss es "= N", "= B", "= R" oder "= Q" oder gar nichts sein.

+0

Beispiel gültige Beispiele bitte. Wo können Sie dieses _pair_ finden? Am Anfang, am Ende oder in der Mitte der Saite? –

+0

@noob: Das OP hat die gültigen Zeichenpaare angegeben. Wo in der Zeichenfolge, die sie erscheinen, ist irrelevant – Borodin

+0

@Borodin: Von diesem _Ich möchte in der Lage sein, "= N", "= B", "= R" oder "= Q" in einer Zeichenfolge _ es schien wie gegeben Muster sollte erscheinen irgendwo in der Zeichenfolge. Ich wollte mir eine Lösung überlegen, ob sie am Anfang oder am Ende erscheint. –

Antwort

4

Wenn Sie mehr als eine regex Produktion optional zu machen, schließen Sie sie in Klammern, die Erfassung oder Nicht-Erfassung:

(=[NBRQ])? 

Die oben würde eine optionale =N, passen =B, =R oder =Q. Da das Fragezeichen nach Klammern angezeigt wird, ist die gesamte Gruppe optional, nicht ihre einzelnen Teile.

+0

Danke, das hat es gelöst. – ppyvabw

+4

Dies wird unnötigerweise erfasst. '(?: = [NBRQ])?' Ist besser – Borodin

+1

@Borodin Sorry, ich wollte "Capturing oder Non-Capturing" anstelle von "Gruppierung oder Nicht-Gruppierung" sagen (ich weiß nicht einmal, was nicht Gruppierung Klammern "würde bedeuten). Vielen Dank! – dasblinkenlight

Verwandte Themen