2016-03-25 3 views
-2

Was könnte der REGEX von einfachen englischen Wörtern wie ali, abc, alex sein. Und auch Regex der Zeichenfolge "Ali" mit Anführungszeichen. Mittel Input1: ali Ausgang: ali ist ein Wort Input2: "ali" Output2: "ali" ist ein StringWas ist die Regex von einfachen Wörtern und in Anführungszeichen in C#

+1

Dies sollte einfach sein, wenn Sie grundlegende Regex studiert haben. Ich schlage vor, dass Sie in [regulary-expressions.info] (http://www.regular-expressions.info) schauen und versuchen, es herauszufinden. –

+0

Bitte definieren Sie was Sie meran durch einfache englische Wörter. Funktioniert irgendein Wort? Was ist mit der Purpuration wie O'Malley oder Test-gefahren? Wie wäre es mit Buchstaben mit Akzenten? –

+0

Nun, ich konnte Ali und "Ali" nicht unterscheiden. – Ali

Antwort

2
(")?([\w]+)(\1)? 

die Online-Demo Siehe: https://regex101.com/r/uV4xI9/1

+0

Oder einfacher, '"? \ W + "?' –

+1

Nun, es wird auch '' ali oder 'ali" 'übereinstimmen, aber dieser passt entweder 'ali' oder' "ali" ' –

+1

Ah, yup, du ' hast recht. –

0

Es ist ein wenig komplexer :

mögliche Lösung: ^[^\"]*$|(?<=^\")[^\"]*(?=\"$)

der Punkt: es gibt zwei mögliche "legal" Strings:

^[^\"]*$ 

oder

(?<=^\")[^\"]*(?=\"$) 

Die erste bedeutet, eine beliebige Anzahl von nicht " Zeichen zwischen dem Anfang der Zeichenfolge (^) und das Ende der Schnur ($).

Die zweite ist :-)

für den Leser als Übung

Kidding ...

Das zweite Mittel I entsprechen beliebige Anzahl von nicht-" Zeichen ([^\"]*), die durch vorangestellt ist der Anfang des Strings (^) und ein Doppelzitat (?<=^\"), gefolgt von einem doppelten Anführungszeichen und dem Ende des Strings (?=\"$).

Prüfregeln hier:

Regex rx = new Regex("^[^\"]*$|(?<=^\")[^\"]*(?=\"$)"); 
var result1 = rx.Match("abc").ToString(); 
var result2 = rx.Match('"' + "abc" + '"').ToString(); 
Console.WriteLine(result1); 
Console.WriteLine(result2); 

Wenn Sie es vorziehen, nur bestimmte Gruppen von Zeichen übereinstimmen, anstatt nicht ", dann ersetzen Sie die [^\"] mit dem, was Sie passen wollen, wie \\w (es wichtig ist, die Doppel -backslash)

0

es ist unmöglich, Bedingung nur mit regex ersetzen zu erstellen. Sie sollten schreiben C# code:

string input1 = "\"ali\""; //string 
string input2 = "ali"; //word 
Console.WriteLine(Replace(input1)); //"ali" is string 
Console.WriteLine(Replace(input2)); //ali is word 

static string Replace(string input) 
{ 
    Match m1 = Regex.Match(input, "\"\\w+\""); 
    Match m2 = Regex.Match(input, "\\w+"); 
    if (m1.Success) 
     return m1.Groups[0].Value + " is string"; 
    if (m2.Success) 
     return m2.Groups[0].Value + " is word"; 
    return "nor string nor word"; 
} 
Verwandte Themen