webForumDet fria alternativet

Räkna Regular Expression matches

.NETur .NET

7 svar · 339 visningar · startad av greggan

Medlem sedan jan. 2004678 inlägg
Frågan#1

Hejsan

Jag försöker få svar på detta igen.

Jag tänkte köra två stycken regexp på en textbox/sträng och sedan vill jag räkna antalet matches från varje regexp och sedan jämföra dessa nummer.

Det jag undrar är hur man kan räkna matches av en regexp.
ungefär som regextesten på http://www.regexlib.com/RETester.aspx

Om jag skriver in en text samt en regexp så får jag reda på hur många träffar den hade.

Hur gör jag detta?

Medlem sedan dec. 19995 875 inlägg
#2

Kolla in matchcollection.

Det fungerar ungefär såhär

Dim expression as RegEx = new RegEx(pattern)
Dim matches As MatchCollection = expression.Matches
Console.Write(matches.Count)

Medlem sedan jan. 2004678 inlägg
#3

hmm.. vad innebär console.write? kan jag använda något annat typ en sträng = matches.count?

Medlem sedan apr. 2004778 inlägg
#4

Console.Write är WinForms motsvarighet till Response.Write.

Medlem sedan jan. 2004678 inlägg
#5

aha.. och det hamnar var?
jag får det verkligen inte att fungera. dels vet jag inte vart jag ska sätta in det jag vill kolla, och jag har googlat runt i mer än en timme och letat och testat olika saker och jag får olika fle hela tiden. Jag vet inte om jag behöver infoga några speciella namespaces eller hur det ska vara. Den kodsnutten jag fick här ser ganska lätt ut så det vore skönt om jag kunde använda den.
Jag ska köra två stycken kontroller med olika regexp räkna matches från båda och sedan jämföra dessa antal. Därför vore det skönt om man kunde få ut svaret i en sträng. Det som kotrolleras är en textbox.

Medlem sedan dec. 19995 875 inlägg
#6

Här kommer ett fungerande exempel

        Dim expression As Regex = New Regex("[0-9]")
        Dim matches As MatchCollection = expression.Matches(TextBox1.Text)
        'Dim matches As MatchCollection = expression.Matches("massa text 123 massa text 456 massa text")
        MessageBox.Show(String.Format("{0} matchar hittades...", matches.Count))

Om du bortkommenterar raden med den texten "massa text 123.." osv, så kommer du få resultatet 6 matchar eftersom det finnas 6 siffror, och därmed matchar pattern.

Medlem sedan juli 20022 537 inlägg
#7

greggan skrev:

hmm.. vad innebär console.write?

När man skapar console-program (körs i kommandotolken) så kan man använda Console.Write för att skriva ut en text, Console.WriteLine för att skriva på en egen rad samt Console.ReadLine() för att låta användaren skicka in något.

Medlem sedan jan. 2004678 inlägg
#8

det fungerade finfint. =D
fick användning för det på fler ställen... tackar så mycket. :D

135 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)