2017-11-23 19 views
0

私は単語を検出するVB.netプログラムを作成しています。ここに私のサンプルテキストファイルです:Regexと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は、外部または外部または任意の組み合わせであってもよい)。最初の試合は「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 

おかげで。

答えて

1

は、この正規表現を試してみてください。これにより

(?<=EXTERNAL)\s*.*?(?=\s*--)

あなたが各試合の前に余分な先頭のスペースを取得します。私は、マッチを使う前に簡単にそれを整えることができると思います。

Click for Demo

説明:

  • (?<=EXTERNAL) - すぐEXTERNALが先行する位置を見つけるための正の後読み。 Ignore Caseフラグをオンに切り替えます。
  • \s* - これはあなたの実際の試合である - .*?
  • できるだけ多くのホワイトスペースのマッチ0+出現、。これは、任意の文字が、改行文字の0+の繰り返しに一致できるだけ少ないよう
  • (?=\s*--) - 肯定先読みはマッチが--
+0

Gurman続い0+のスペースが続かなければならないことを検証するために - 非常に近いですしかし、3つのタグ(16FC0730、16FC0815、16FC0830)を選択する必要がある場合は、1つしか表示されません(16FC0730)。私は外部の前にすべてを選択する必要があります。ありがとう。 – TanuAD

+0

こんにちは...私はそれを正しく読まなかった。私は今、解決策を更新した。 – Gurman

+0

非常に良い説明。正規表現について新しいことを学びました。ありがとうガーマン。 – TanuAD

関連する問題