Regex VB.NET选择字符串匹配模式
我知道如何在VB.NET中使用“like”操作符测试模式,但我想做的是测试可以出现在字符串中任意点的模式并返回它 即 现在我知道上面的内容,但我希望返回与模式匹配的文本 我可能会错过一些基本的东西,但我已经看了那么久,我在挣扎,需要另一种意见Regex VB.NET选择字符串匹配模式,regex,vb.net,Regex,Vb.net,我知道如何在VB.NET中使用“like”操作符测试模式,但我想做的是测试可以出现在字符串中任意点的模式并返回它 即 现在我知道上面的内容,但我希望返回与模式匹配的文本 我可能会错过一些基本的东西,但我已经看了那么久,我在挣扎,需要另一种意见 干杯您可以使用以下正则表达式: \d{2}-\p{L}{4}\d{2}\p{L}{2}\d{2} 看 如果它是始终是一个完整单词的子字符串,则用单词边界将此模式括起来:\b\d{2}-\p{L}{4}\d{2}\p{L}{2}\d{2}\b VB.NET
干杯您可以使用以下正则表达式:
\d{2}-\p{L}{4}\d{2}\p{L}{2}\d{2}
看
如果它是始终是一个完整单词的子字符串,则用单词边界将此模式括起来:\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
请参见您需要的是在控制台中写入字符串“匹配项” 如果正确,您必须用双引号将“匹配项”装箱
Console.WriteLine("Matches")
如果您需要澄清OP问题,请添加评论。这不是OP所要求的。没关系,我们都在某个地方学到了-请记住,以备将来参考:)我使用
\p{L}
来表示?
,只是因为您的字符串在这些地方包含字母。如果可以有除空格以外的任何字符,则可以使用\S
。如果可以有任何字符,请使用
(带有RegexOptions.Singleline
标志,它甚至会匹配换行符)。我有一个字符串是“REF:02-IJZ07PC01-CRTA交货收据”,但Regex不将其识别为匹配?怎么会?相同的##-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#/code>之后只有3个字母。你的实际需求是什么?无论如何,要匹配上一个和这个格式,你可以使用。啊哈!很抱歉,这是主题行中的一个错误。您只需使用.Match(str).Value
。我会立即更新答案。Like
操作符只是为了比较,如果您需要返回匹配的字符串,那么您需要使用实际的正则表达式引擎(我相信您现在有下面的答案)来返回匹配集合
Console.WriteLine("Matches")