2016-05-08 3 views
0

Ich möchte wissen, wie ich einen OR Regex-Ausdruck übergeben kann. Ich habe versucht, "(u|^upload)" aber dies scheint nicht zu arbeiten und stattdessen fängt alles, was ichC# Regex: Wie macht man eine ODER-Übereinstimmung?

var regex = new Regex("(u|^upload)", RegexOptions.IgnoreCase); 
    return regex.IsMatch(msg.Text); 

Typ I erwarten, dass es u oder U fangen oder laden oder hochladen

+0

Spiel am Start? – heemayl

+0

@heemayl nicht nur u oder nichts hochladen, up wäre ungültig. – user299709

Antwort

1

Das richtige Muster wäre:

^(u|upload)$ 

Dabei sind ^ und $anchors, die den Anfang und das Ende der Zeichenfolge entsprechen. Dies bedeutet, dass das Muster nur die Zeichenfolge oder gar nichts entspricht.

Aber was das betrifft, die Sie nicht wirklich reguläre Ausdrücke überhaupt benötigen:

var values = new[] { "u", "upload" }; 
return values.Contains(msg.Text, StringComparer.OrdinalIgnoreCase); 

Nur zur Veranschaulichung würde ein äquivalentes Muster sein:

^u(pload)?$ 

Dies macht jede Zeichenfolge, die mit u beginnt, optional gefolgt von pload, gefolgt vom Ende der Zeichenfolge. keines von beiden

Hinweis jedoch wird nur Spiel u, U, upload oder Upload. Dank RegexOptions.IgnoreCase würden sie auch UPLOAD oder uPlOaD entsprechen. Wenn Sie nur genau die vier Optionen zu überprüfen wollen könnten Sie tun:

var regex = new Regex("^[uU](pload)?$"); 

Oder (mit group options):

var regex = new Regex("^u(?-i:pload)?$", RegexOptions.IgnoreCase); 

oder ohne reguläre Ausdrücke:

var values = new[] { "u", "U", "upload", "Upload" }; 
return values.Contains(msg.Text); 
0

Zur Erfassung sowohl u und U oder Upload und Upload verwenden Sie diese

([uU]|[uU]pload) 

Wenn Sie es am Anfang der Zeichenfolge wollen:

^([uU]|[uU]pload) 

Wenn Sie wollen, dass diese gegen die gesamte Zeichenfolge Verwendung zu prüfen:

^([uU]|[uU]pload)$ 

Demo here

1

-Test diese übereinstimmen Die Strings beginnen mit 'u' oder 'U' und enden mit 'e' oder 'E'. Und der Buchstabe 'u' oder 'U'.

([uU].*?e)|([uU]) 

Oder Sie können diese anpassen verwenden 'update', 'Update', 'u' und 'U'.

([uU]pdate)|([uU])