Ich habe eine Liste von Zeichenfolgen. Einige von ihnen haben die Form 123-...456
. Der variable Teil "..." kann sein:
- die Zeichenfolge "Apfel" gefolgt von einem Bindestrich, z
123-apple-456
- die Zeichenfolge "Banane" gefolgt von einem Bindestrich, z
123-banana-456
- eine leere Zeichenfolge, z. B.
123-456
(beachten Sie, dass es nur einen Bindestrich gibt)
Jedes andere Wort als "Apfel" oder "Banane" ist ungültig.
Für diese drei Fälle möchte ich "Apfel", "Banane" bzw. "" zuordnen. Beachten Sie, dass ich will nie erfassen den Bindestrich, aber ich will immer passen es. Wenn die Zeichenfolge nicht die 123-...456
oben beschriebene Form hat, gibt es überhaupt keine Übereinstimmung.
Wie schreibe ich dazu einen regulären Ausdruck? Angenommen, ich habe einen Geschmack, der Lookahead-, Lookbehind-, Lookaround- und nicht erfassende Gruppen zulässt.
Die wichtigste Beobachtung hier ist, dass Sie, wenn Sie entweder "Apfel" oder "Banane" haben, auch den nachgestellten Bindestrich haben müssen, aber nicht damit übereinstimmen möchten. Und wenn Sie mit der leeren Zeichenfolge übereinstimmen, darf der nachfolgende Bindestrich nicht vorhanden sein. Ein regulärer Ausdruck, der diese Behauptung zusammenfasst, wird meiner Meinung nach der richtige sein.