VB.NET选择字符串匹配模式

时间:2015-09-11 10:07:18

标签: regex vb.net

我知道如何使用' like'来测试图案。 VB.NET中的运算符,但我想做的是测试可以出现在字符串中的任何点并返回它的模式。

Dim _MyString As String = "Dave 01-LYJX01PC01 XXYZABC"
Dim _MyString2 As String = "Dave XXYZABC 01-LYJX01PC01"

If _MyString LIKE "##-????##??##" Then
 Console.WriteLine(_MyString )
End If

现在我知道了上述内容,但我想做的是返回与模式匹配的文本。

我可能会遗漏一些非常基本的东西,但是我看起来很久很难挣扎,需要另一种意见。

干杯

2 个答案:

答案 0 :(得分:2)

您可以使用以下正则表达式:

\d{2}-\p{L}{4}\d{2}\p{L}{2}\d{2}

请参阅demo

如果它是一个始终是整个单词的子字符串,请将此模式用单词边界括起来:\b\d{2}-\p{L}{4}\d{2}\p{L}{2}\d{2}\b

VB.NET片段:

Dim my_rx As Regex = New Regex("\d{2}-\p{L}{4}\d{2}\p{L}{2}\d{2}")
Dim my_matches As List(Of String) = my_rx.Matches("Dave 01-LYJX01PC01 XXYZABC").Cast(Of Match)().Select(Function(m) m.Value).ToList()
Dim my_matches2 As List(Of String) = my_rx.Matches("Dave XXYZABC 01-LYJX01PC01").Cast(Of Match)().Select(Function(m) m.Value).ToList()

<强>更新

由于输入字符串中总是有1个匹配项,因此可以使用简单的代码:

Dim my_result As Match = my_rx.Match("Dave XXYZABC 01-LYJX01PC01")
If my_result.Success Then
   Console.WriteLine(my_result)
End If

请参阅IDEONE demo

答案 1 :(得分:-1)

您需要在控制台中编写字符串'Matches'吗?

如果正确,你必须用双引号封装'匹配'。

Console.WriteLine("Matches")