2012-11-13 14 views
15

Angenommen, ich möchte, dass eine Regex "Über diese Brücke FOOL springen" sowie "Über diese Brücke springen". Wie mache ich "FOOL" optional (0 oder 1 Vorkommen)?Regex, um 1 oder weniger Vorkommen von String zu entsprechen?

+11

ich verstehe nicht, warum die Leute dieses Downvoted. Sicher, es ist in einem Handbuch ... aber die einfache Tatsache ist, dass API-Handbücher im Allgemeinen saugen, und Stack-Exchange. Ist die Go-to-Site für einfache moderierte Antworten eine Frage ohne beschissene API-Dokumente oder fünfzehn-Seiten-Blogs geworden. Ich folgte DIESEM Link, weil ich vergessen hatte, wie und eine einfache Antwort brauchte, ohne eine halbe Stunde damit zu verbringen, durch ein schlechtes Handbuch zu lesen, nur um etwas Einfaches zu finden. Die Moderatoren hier müssen erkennen, dass StackExchange zu einem PRODUKT geworden ist, auf das sich die Leute VERLASSEN. Fragen wie diese sind präzise im S.E. Produkt definition. Lebe damit. –

Antwort

12

You might want to have a look at a regex tutorial.

Optional Teile einer Regex mit einem Fragezeichen angegeben sind:

Jump over this bridge(FOOL)? 

Falls Sie jede Zeichenfolge übereinstimmen soll, die FOOL weniger enthält als doppelt so hoch, werden die Dinge ein wenig komplizierter. Dann würden Sie am besten aus den fortgeschritteneren Konzept eines negative lookahead mit:

^(?!(.*FOOL){2}) 

Diese Logik auf den Kopf stellt und behauptet, dass die Zeichenfolge nicht enthalten 2 (oder mehr) Instanzen von FOOL.

+0

-1, jede einzelne Stapelüberlauffrage kann mit "Durch das Lesen eines X-Tutorials" beantwortet werden, sodass der Kommentar keinen anderen Wert hat, als das Poster zu verunglimpfen, und nicht enthalten sein sollte. Externe Links zu Antworten sind auch verpönt (die Antwort sollte in der Frage selbst sein, wie Sie getan haben) – pjcard

+0

@pjcard stimmte zu. Ich habe die Antwort neu formuliert. –

+1

Danke, ich habe es für eine +1 geändert. – pjcard

1

Versuch dies zu tun:

Jump over this bridge(FOOL)? 

Sie können auch eine Reihe von Strings setzen:

Jump over this bridge(FOOL| FOOB)? 
10

Sie können das ? Zeichen, das Auftreten einer Gruppe als Option angeben (tritt auf 0 oder 1 mal), oder Sie können auch geschweiften Klammern mit Min/Max-Werte als 0 und 1, so ist die Antwort benutzen:

Jump over this bridge(FOOL)? 

oder

Jump over this bridge(FOOL){0,1} 
Verwandte Themen