【发布时间】:2020-07-10 01:35:35
【问题描述】:
我正在尝试在没有正则表达式的情况下搜索字符串,这可能是个坏主意!
搜索作用于 RichText 框中的文本字符串
如果我搜索“is”,字符串中的第一个单词是“This”
“This”的最后两个字母在 vbRed 中突出显示
要搜索的字符串还有另外两个“is”,它们按预期找到并突出显示
我可以防止“This”中的“is”被找到吗?
Private Sub btnSearch_Click()
Dim pos As Integer
Dim strToFind As String
Dim Y As Integer
Dim Ask As String
pos = 1
strToFind = tbSearch.Text
Do
strToFind = tbSearch.Text
pos = InStr(1, strToSearch, strToFind)
For Y = 1 To Len(strToSearch)
Ask = MsgBox("Yes Next Occurrence or No To Exit ?", vbYesNo, "Question")
If Ask = vbYes Then
lbOne.AddItem pos
tbAns.Text = pos
If pos = 0 Then
Exit Sub
End If
rtbOne.SelStart = pos - 1
rtbOne.SelLength = Len(strToFind)
rtbOne.SelColor = vbRed
pos = InStr(pos + 1, strToSearch, strToFind)
Else
tbAns.Text = "NO"
pos = InStr(pos + 1, strToSearch, strToFind)
tbAns.Text = pos
Exit Sub
End If
Next
Loop Until pos > 0
End Sub
Private Sub Form_Load()
strToSearch = "This is a lot of text that will be loaded in the lbText and we will search it is it a case sensative Search"
rtbOne.Text = strToSearch
tbSearch.Text = "is"
End Sub
如果这是不可能的,关于如何使用正则表达式的一些建议
我知道我需要添加参考,这可能是
模式 myRegExp.Pattern = "(.)\strToFind\b(.)"
【问题讨论】:
-
使用您当前的方法,您可以在搜索字符串之前和之后查找字符。字符串之前应该是空格,字符串之后可以是任何标点符号,但不能是字母(ASCII 码 65-90、97-122)
-
@ÉtienneLaneville 我有点理解,但不确定如何实现我确实尝试过这样的事情,但这个 strToFind = " " & tbSearch.Text & " "
-
富文本框有自己的搜索功能,如 MS Word。见
EM_FindTextExWdocs.microsoft.com/en-us/windows/win32/controls/em-findtextexw。
标签: regex vb6 richtextbox