如果它找到特定的字符(在这种情况下是 tkt)我想要 msgbox
它们与以下字符一起直到一个空格,一个字符
不是字母、数字或字符串的结尾。
听起来是Regex.Match() 的好候选。
如果您只希望字符串中有 一张票:
Dim strTEST As String = "I am a ticket. My ticket is tkt8937378"
Dim m As Match = Regex.Match(strTEST, "\btkt[0-9a-fA-F]+\b")
If m.Success Then
Dim ticket As String = m.Value
MessageBox.Show("Ticket " & ticket & " found.")
End If
对于字符串中的多个票号,使用带有 Match() 的循环,或切换到 Matches() 方法。
您可以在Regular-Expressions.info 了解更多关于正则表达式的信息。
--------- 编辑#1 ----------
你可以在这个 RegEx 中有多个实例吗?例如找到
tkt 和 TKT 都可以吗?还是让它不区分大小写?
当然!您可以通过添加(?i) 使模式本身不区分大小写:
Dim m As Match = Regex.Match(strTEST, "\b(?i)tkt[0-9a-fA-F]+\b")
或者,您可以通过传递第三个参数并使用RegexOptions.IgnoreCase 来告诉Match() 不区分大小写:
Dim m As Match = Regex.Match(strTEST, "\btkt[0-9a-fA-F]+\b", RegexOptions.IgnoreCase)
--------- 编辑#2 ----------
我注意到,当我尝试 For Each 票时,我把它弄坏了。意思是msgbox的
我找到的每封信。所以如果我在一个字符串中有两个 tkt。 - 比如:“我是
一张票。我的票是 tkt8937378 和 tkt89377786"
这是一个返回字符串中所有票号的简单示例:
Dim strTEST As String = "I am a ticket. My ticket is tkt8937378. I am different ticket, called TKT411, in the same string." & vbCrLf _
& "I'm a loner tKt911411311 on a different line!"
Dim m As Match = Regex.Match(strTEST, "\btkt[0-9a-fA-F]+\b", RegexOptions.IgnoreCase)
While m.Success
Dim ticket As String = m.Value
Console.WriteLine(ticket)
m = m.NextMatch
End While
与上述相同,但使用For Each 和Regex.Matches() 而不是Match():
Dim strTEST As String = "I am a ticket. My ticket is tkt8937378. I am different ticket, called TKT411, in the same string." & vbCrLf _
& "I'm a loner tKt911411311 on a different line!"
For Each m As Match In Regex.Matches(strTEST, "\btkt[0-9a-fA-F]+\b", RegexOptions.IgnoreCase)
Dim ticket As String = m.Value
Console.WriteLine(ticket)
Next