2010-09-13 3 views
2

Je veux trouver des mots à l'intérieur du texte, où le mot contient seulement le jeu de caractères présélectionné.Utilisation de regex pour trouver des mots à l'intérieur du texte en C#

Par exemple: J'utilise regex pour diviser sur des caractères non dans le jeu et supprimer les entrées qui sont vides

Comme:

string inp = @"[email protected]#e$мудак%š^t<>is69&.,;((טעראָר))_+}{{男子}[죽은]ที่เดิน:?/Ök\|`'+*-¤="; 
string reg[] = {"[^A-Za-zšžõäöüŠŽÕÄÖÜ]"}; 

foreach (string word in inp.Split(reg, StringSplitOptions.RemoveEmptyEntries)) 
    Console.Write(word + " "); 

sortie, que je suis en train de faire, est:

T e š t is Ök 
+0

Utilisé: foreach (mot de chaîne dans le nouveau Regex ("[^ A-Za-zšžõäöüŠŽÕÄÖÜ] +"). Split (inp)) – Margus

Répondre

6

Vous voulez Regex.Split(String, String) au lieu de String.Split (String [], StringSplitOptions) - ce dernier ne correspond pas à la regex.

Un peu comme ce qui suit (testé):

string inp = @"[email protected]#e$мудак%š^t<>is69&.,;((טעראָר))_+}{{男子}[죽은]ที่เดิน:?/Ök\|`'+*-¤="; 
string reg = "[^A-Za-zšžõäöüŠŽÕÄÖÜ]"; 

foreach (string word in Regex.Split(inp, reg)) 
    if (word != string.Empty) 
     Console.Write(word + " "); 

test PowerShell:

PS> $inp = '[email protected]#e$мудак%š^t<>is69&.,;((טעראָר))_+}{{男子}[죽은]ที่เดิน:?/Ök\|`''+*-¤=' 
PS> $inp -split '[^A-Za-zšžõäöüŠŽÕÄÖÜ]' -join ' ' 
T e š t is          Ök 

Il est évident que vous devez filtrer les chaînes vides, donc soit

PS> $inp -split '[^A-Za-zšžõäöüŠŽÕÄÖÜ]' -ne '' -join ' ' 
T e š t is Ök 

ou

PS> $inp -split '[^A-Za-zšžõäöüŠŽÕÄÖÜ]+' -join ' ' 
T e š t is Ök 

(., Bien que celui-ci contient encore un élément vide au début ... ah bien, je vais laisser ça à vous)

1

C'est ce que vous voulez (testé):

string inp = @"[email protected]#e$мудак%š^t<>is69&.,;((טעראָר))_+}{{男子}[죽은]ที่เดิน:?/Ök\|`'+*-¤="; 
Regex reg = new Regex("[^A-Za-zšžõäöüŠŽÕÄÖÜ]"); 

foreach (string s in reg.Split(inp)) 
{ 
     if (String.IsNullOrEmpty(s)) 
      continue; 

     Console.Write(s + " "); 
} 
+0

Cela "(testé)" était un défi, n'est ce pas? ;-) – Joey

+0

Bien sûr, je devais le rendre meilleur que le tien :) –

Questions connexes