2016-06-16 5 views
-2

大きなテキストファイルがあります。無関係のデータがたくさんあります。私はそれをStreamReaderに読み込み、whileループを実行することができます。私のテキストファイルには、この.netファイル内の2つの既知の文字列の間の文字列を検索します。

MyStartStringのようなものです "応答:" 間でのWebサービス1 MyEndString someDataがからの私の応答*** MyStartString * "応答:" ウェブサービス2 からの私の応答** MyEndString

このようになります(約70MBのファイル)。私は "応答:" Webサービス1からの私の応答と "応答:" Webサービス2からの私の応答などをリストに取得する必要があります。私はRegexでこれを行うことができることを知りました。誰かが私を助けることができますか?私はStackoverflow postを見ました。

更新:ファイル抽出の下に貼り付けています。したがって、下記の「**** MgrTypeレスポンスボディ**」と「** End ::」を見ることができます。彼らの間には反応があります。私はそれらの反応を得る必要があります。画像ファイルRegex correct matched with 2 matches

マイファイルのエキス:

はEmployeeType:マネージャー

MgrType要求ペイロード { "イベント":[{ "いくつかのデータ"}]}}}}]}

**** NFNレスポンスヘッダー**

X-オリジナル-HTTP-ステータスコード:200

件のMyID:cc24e044-babf-46d3-bda5-bb0de1e586e5

接続:近い

日:火、2016年6月14日午前21時28分01秒GMT

* MgrTypeレスポンスボディ

{ "応答":{ "いくつかのデータ1つの\ n --- ENDのMESSAGES ---の\ n"}]}}}

エンド::イベント1のうち1

* *

someDataがHERE1

someDataがHERE2

someDataがHERE3

someDataがHERE4

xyzserverするNFNを完了...

someDataがHERE555

* MgrTypeレスポンスボディ

{ "レスポンス":{ "いくつかのデータ2つの\ n --- ENDのMESSAGES ---の\ n"}]}}}

エンド:: 1

のうちイベント1 *

* xyzserverするNFNで完了10
+0

ファイルの形式をより正確に指定する必要があります。それは複数の行を持っていますか?イニシエータとターミネータの文字列はどこにファイルに現れますか? –

+0

@AttilaRepasi。私はファイル抽出を追加しました。 – RookieAppler

答えて

0

Regex.Matchを使用し、開始文字列と終了文字列の間の任意の文字をパターン検索します。一致する場合は、リストに追加します。

string s; 
List<string> sList = new List<string>(); 

using(StreamReader oReader = new StreamReader("Text1.text")) 
{ 
    while((s = oReader.ReadLine()) != null) 
    { 
     sList.Add(Regex.Match(s, @"MyStartString(.+?)MyEndString").Groups[1].Value); 
    } 
} 
foreach(string s in sList) 
    Console.WriteLine(s); 
+0

あなたの式はスペースとアスタリスクを選択します。私はこの1つ(?<= MyStartString)(?:[\ s \ *] *)(?:?)(?:[\ s \ *] *)(?= MyEndString) '。また、行ごとに複数の一致が可能な場合は、グローバル修飾子を使用する必要があります。 – Niitaku

+0

@Niitaku、私は両方の技術を試して空の文字列、すなわち ""(51の数)のリストを取得しました。 sList.Add(Regex.Match(s、@ "(?<= Body)?:[\ s \ *] *)(?:[\ s \ *] *) (?= End ::)/ g ")。グループ[1] .Value);私は "/ g"を使ってみましたが、https://regex101.com/で正しくマッチしました。しかし、ここにはありません。添付の画像をご覧ください。 @inquistive_mind – RookieAppler

+0

ありがとう&上記のコメントを参照してください。 – RookieAppler

関連する問題