Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.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程序来检测一个单词。以下是我的示例文本文件: EXTERNAL 16EVP_PK -- FL(4) TDC PERMIT CONTRL TO MESTO CONTRL -- FL(5) $HY04B09.BOXTSTAT (= RUN = ON) EXTERNAL 16EVPUPK -- FL(33) REQUEST FROM METSO FOR CONTRL EXTERNAL 16SA0541

我正在写一个VB.net程序来检测一个单词。以下是我的示例文本文件:

EXTERNAL 16EVP_PK   -- FL(4) TDC PERMIT CONTRL TO MESTO CONTRL  
                    -- FL(5) $HY04B09.BOXTSTAT (= RUN = ON)   
EXTERNAL 16EVPUPK   -- FL(33) REQUEST FROM METSO FOR CONTRL   
EXTERNAL 16SA0541                                 -- SP VALUES TRANSFERS  
EXTERNAL 16FC0730, 16FC0815, 16FC0830   -- Hiway 4 Tags   
EXTERNAL 16FC1525                       -- Hiway 4 Tags
我想检测外部之后和之前的一切-外部可以是外部或外部或任何组合。第一个匹配应为16EVP_PK第二个匹配16EVPUPK第三个匹配16SA0541第四个匹配16FC0730、16FC0815、16FC0830,依此类推

以下是我编写的代码:

Private Sub CheckCLFile()
path="D:\16METEVP.CL"
'Read CL file
Dim value As String = System.IO.File.ReadAllText(path)
Dim Pattern As String = "(?m)(?<=\bExternal).*$"
Debug.WriteLine(value)
Debug.WriteLine(Regex.Matches(value, Pattern).Count())
For Each m As Match In Regex.Matches(value, Pattern)
Console.WriteLine("'{0}' found at index {1}.",
                          m.Value, m.Index)
Next
End Sub
提前感谢。

试试这个正则表达式:


?Gurman-非常接近,但如果需要选择3个标签16FC0730、16FC0815、16FC0830,我只看到一个16FC0730。我需要在外部之后选择所有内容,但在-。谢谢。嗨…我没有正确阅读。我现在更新了解决方案非常好的解释。学习了一些关于正则表达式的新知识。感谢Gurman。使用.NET,这样就不需要将lookback设置为固定长度,如果使用了\s*,则不需要修剪前导空格。@PJProudhon感谢您提供的信息。我不知道那件事。这是更新后的解决方案