Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex VB.NET选择字符串匹配模式_Regex_Vb.net - Fatal编程技术网

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

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

我知道如何在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代码段:

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")