Reputation: 1
In my window application i want to find the exact word from a sentence.the two field will be a textbox(word) and richtextbox(sentence) respectively.
I've used Str(i).contains(word) and For Each match As Match In Regex.Matches(str(i), word).
But these two does not get the exact word.For example , Word:ate sentence:parfaite ment aux exigences cre*ate* évolutives du marché d aujourd hui
in the above it fetches the ate in create.but i need to focus onle ate not with combined.
Upvotes: 0
Views: 2694
Reputation: 641
Maybe this could help?
Private Sub SearchForWord()
Dim SearchString() As String = Split("ate parfaite ment aux exigences cre*ate* évolutives du marché d aujourd hui", " ")
Dim WordToFind As String = "ate"
Dim count As Integer = 0
Dim NumMatches As Integer = 0
Do Until count = UBound(SearchString)
If UCase$(WordToFind) = UCase$(SearchString(count)) Then
NumMatches = NumMatches + 1
End If
count = count + 1
Loop
Debug.Print(Format(NumMatches))
End Sub
Upvotes: 0
Reputation: 1449
In your Regex.Matches, you need to use \b word boundaries character. I just wrote an example code in C#, and now I noticed that your question is for VB.NET, so I'll add both code examples:
C#:
//Example 1:
var testString = "parfaite ment aux exigences create évolutives du marché d aujourd hui";
var pattern = "ate";
MatchCollection found = Regex.Matches(testString, @"\b" + pattern + @"\b");
if (found.Count > 0)
{
foreach (Match f in found)
{
Console.WriteLine("'{0}' found at position {1} in given testString.", f.Value, f.Index);
}
}
else Console.WriteLine("No matches in given testString.");
//Example 2:
var testString1 = "parfaite ment aux exigences cre*ate* évolutives du marché d aujourd hui I don't know the language but this: ate and the last one should be found: ate!";
var pattern1 = "ate";
MatchCollection found1 = Regex.Matches(testString1, @"\b" + pattern1 + @"\b");
if (found1.Count > 0)
{
foreach (Match f in found1)
{
Console.WriteLine("'{0}' found at position {1} in given testString1.", f.Value, f.Index);
}
}
else Console.WriteLine("No matches in given testString1.");
Console.ReadLine();
VB.NET:
'Example 1:
Dim testString = "parfaite ment aux exigences create évolutives du marché d aujourd hui"
Dim pattern = "ate"
Dim found As MatchCollection = Regex.Matches(testString, "\b" & pattern & "\b")
If found.Count > 0 Then
For Each f In found
Console.WriteLine("'{0}' found at position {1} in given testString.", f.Value, f.Index)
Next
Else
Console.WriteLine("No matches in given testString.")
End If
'Example 2:
Dim testString1 = "parfaite ment aux exigences cre*ate* évolutives du marché d aujourd hui I don't know the language but this: ate and the last one should be found: ate!"
Dim pattern1 = "ate"
Dim found1 As MatchCollection = Regex.Matches(testString1, "\b" & pattern1 & "\b")
If (found1.Count > 0) Then
For Each f As Match In found1
Console.WriteLine("'{0}' found at position {1} in given testString1.", f.Value, f.Index)
Next
Else
Console.WriteLine("No matches in given testString1.")
End If
Console.ReadLine()
Upvotes: 4