Was ist der optimale Weg, um Wörter in einer Zeichenfolge in beliebiger Reihenfolge mit Regex in C # zu finden?

8

Also habe ich eine Zeichenfolge "Ich habe ein großes rotes Auto"

Ich möchte, dass ein Benutzer einen Teil der Zeichenfolge in beliebiger Reihenfolge einfügen kann. So können sie "CAR BIG RED" schreiben und die Saite wird gefunden. Ich weiß, dass ich das tun kann, indem ich mehrere IsMatch-Aufrufe mit einer Regex-Zeichenfolge oder eine Zeichenfolge mit Ankern wie "^(?=.*CAR)(?=.*RED)(?=.*BIG).*$" verwende. Ich habe mich gefragt, was wäre die beste Option oder gibt es eine noch bessere Option?

Hinweis: Ich verwende C #, also sollte jeder .net Regex funktionieren. Alle Vorschläge sind willkommen.

    
Casey Sebben 27.05.2013, 03:20
quelle

4 Antworten

13

Wenn Sie den Bereich von Regex verlassen, können Sie Folgendes tun:

%Vor%     
Keith Nicholas 27.05.2013 03:34
quelle
4

Sie könnten einfach die Wörter im String anhand der Wörter im Suchstring überprüfen.

Sie könnten Linq dafür verwenden, wenn Sie möchten

Linq:

%Vor%

Regex:

Mit RegEx können Sie alle einzelnen Wörter in eine durch Pipe getrennte Zeichenfolge verketten und mit dem Operator \b nach den ganzen Wörtern suchen.

%Vor%

Allerdings kann es eine schönere Möglichkeit geben, dies mit RegEx zu tun, ich kenne nur die Grundlagen von RegEx

    
sa_ddam213 27.05.2013 03:31
quelle
0

Eine einfache Idee ohne LINQ:

%Vor%     
Ria 27.05.2013 04:21
quelle
0

Sie können auch die Methode Array.FindAll verwenden. Siehe das Beispiel im Link.

    
NeverHopeless 27.05.2013 05:31
quelle

Tags und Links