RegEX检查X.X,空行和字符串中的Employees一词

时间:2016-02-18 20:56:28

标签: regex vb.net

嘿所有我正在寻找一种方法,使用 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)

1 个答案:

答案 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是可选的,因此模式可以匹配最后一行。

Demo code

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]