嘿所有我正在寻找一种方法,使用 REGEX 来检测它所看到的字符串是否包含X.X.
某些字符串的示例如下:
1.0- Back of Place
1.1- Drive-thru
Bob Barker
Employees
2.1- Closing
Garret Neal
3.0 - Day
3.1 -Day/Night
Bill Gates
4.1- Training
[etc etc etc]
如果字符串包含 X.X 或 Employees ,我感兴趣。一旦我能够检测到这两件事,那么列表就应该是这样的:
Bob Barker
Garret Neal
Bill Gates
[etc etc etc]
我已经尝试了 [0-9] {1,3} ,但它似乎没有给我我想要的东西:
Dim blah = Regex.Match("1.1- Drive-thru", "[0-9]{1,3}", RegexOptions.Singleline).ToString()
MsgBox(blah)
答案 0 :(得分:1)
因此,您有一个多行字符串作为输入。在该字符串中,您要删除以digits
+ .
+ digits
开头的行或以Employees
开头的行。
您可以将Regex.Replace
与以下正则表达式一起使用:
Regex.Replace(str, "(?m)^(?:Employees|\d+\.\d+).*[\r\n]*", "")
请参阅regex demo
正则表达式匹配:
(?m)^
- 开始行(?:Employees|\d+\.\d+)
- Employees
或一个或多个数字后跟.
,后跟一个或多个数字.*
- 其余部分[\r\n]*
- 零个或多个CR或LF字符(因此,它也会匹配几个连续的空行)。CR和LF是可选的,因此模式可以匹配最后一行。
Imports System
Imports System.Text.RegularExpressions
Public Class Test
Public Shared Sub Main()
Dim str As String = "1.0- Back of Place" & vbCrLf & "1.1- Drive-thru" & vbCrLf & "Bob Barker" & vbCrLf & "Employees" & vbCrLf & vbCrLf & "2.1- Closing" & vbCrLf & "Garret Neal" & vbCrLf & "3.0 - Day" & vbCrLf & "3.1 -Day/Night" & vbCrLf & "Bill Gates" & vbCrLf & "4.1- Training" & vbCrLf & "[etc etc etc]"
Console.WriteLine(Regex.Replace(str, "(?m)^(?:Employees|\d+\.\d+).*[\r\n]*", ""))
End Sub
End Class
输出:
Bob Barker
Garret Neal
Bill Gates
[etc etc etc]