我正在编写一个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
我想检测EXTERNAL之前和之前的所有 - (EXTERNAL可以是外部或ExTernal或任何组合)。第一场比赛应该是" 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
提前致谢。
答案 0 :(得分:1)
试试这个正则表达式:
(?<=EXTERNAL)\s*.*?(?=\s*--)
有了这个,你将在每场比赛前获得额外的领先空间。我想,你可以在使用比赛之前轻松修剪它。
<强>解释强>
(?<=EXTERNAL)
- 找到紧靠EXTERNAL
之前的位置的正面观察。切换Ignore Case
标志为ON。\s*
- 尽可能多地匹配0 +出现的空格.*?
- 这是你的实际比赛。它匹配任何字符的0 +次出现,但是尽可能少的是新行字符(?=\s*--)
- 确认匹配必须后跟0+空格后跟--