Espressioni regolari c#

mercoledì 13 luglio 2011 - 12.54
Tag Elenco Tags  C#  |  .NET 3.5  |  Windows 7  |  Visual Studio 2008

eddyG Profilo | Junior Member

Ciao a tutti.
mi sono avvicinato alle espressioni regolari per motivi di lavoro e finchè sono espressioni semplici sono riuscito ad avere come risultato ciò che mi aspettavo...ma attualmente con una espressione non riesco a saltarci fuori e spero che qualcuno mi possa dare un piccolo aiutino/suggerimento a riguardo.

io ho una stringa di parole separate tra di loro tramite la ','(virgola) e come espressione sto utilizzando "\b\w{nx,ny}\b" perchè vorrei recuperare i caratteri presenti nel posto nx e ny di ogni singola parola...

dato che n può variare io ho costruito l'espressione in questo modo "\b\w{" + textbox1.text +"x," + textbox2.text + "y}\b"

il risultato è che non mi estrapola nulla...

come mai?
qualcuno saprebbe dirmi qualcosa in più a riguardo?

grazie anticipatamente


danielerew Profilo | Newbie

i valori *.Text sei sicuro che passino? li hai recuperati magari con un get? fai una prova mettendoli nella console..

eddyG Profilo | Junior Member

si,la costruzione dell'espressione è corretta come risultato che poi passo per la ricerca...

danielerew Profilo | Newbie

dovresti postare un po di codice, sarebbe meglio.

Volendo puoi anche aggirare l ostacolo con un if condizionale.

Esempio:

static void Main()
{
string[] sentences =
{
"cow over the moon",
"Betsy the Cow",
"cowering in the corner",
"no match here",
"prova here not",
"xxl not good"
};

string sPattern = "cow";
string sPattern2 = "not";

//string sPattern = @"\\cow\\S*not\\b";

foreach (string s in sentences)
{
System.Console.Write("{0,24}", s);

if ((Regex.IsMatch(s, sPattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase)) || (Regex.IsMatch(s, sPattern2, System.Text.RegularExpressions.RegexOptions.IgnoreCase)))
{
System.Console.WriteLine(" (match for '{0}' found)", sPattern);
System.Console.WriteLine(" (match for '{0}' found)", sPattern2);
}
else
{
System.Console.WriteLine();
}
}
}

ciao spero ti possa essere utile.
daniele

eddyG Profilo | Junior Member

Scusandomi se non mi sono fatto sentire prima,ma ho avuto altro a cui dedicarmi,ti posto le istruzioni che utilizzo per questa espressione regolare:


"\\b\\w{" + txtBoxSearch.Text + "," + txtBoxSearch2.Text + "}\\b";
reg = new Regex(pattern, RegexOptions.IgnoreCase);
MatchList = reg.Matches(txtBoxInput.Text);
FirstMatch = MatchList[0];
txtBoxOutput.Text = FirstMatch.Value;

dove "txtBoxSearch.Text" e "txtBoxSearch2.Text" sono due textbox sulla form in cui inserisco il numero della posizione di cui io vorrei ricavare il carattere associato.

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5