2017-09-26 7 views
0

私はtxtファイル全体を読み込み、文字列の特定の部分を見つけようとしています。例えば、私は文字列 "日付:2019年9月23日"を探しています。もちろん、日付は変更される予定ですが、これは私の問題ではありません。何が起こるかは、ファイルが見つかるたびに残りの部分を取得することです。私の質問は、ファイルの残りではなく、私が望むものだけを得ることをどうすればいいのでしょうか?一致するテキストのみを正規表現で抽出する

Date: 23 Sep 2017 

1. In this Agreement, "I", "me" and "my" refers to the account holder. 

答えて

1

がより良いあなたのニーズに合わせ数量使用してください:nは繰り返し にメートルからメートルの繰り返しに正確

  • *ゼロ回以上の繰り返し
  • +つ以上の繰り返し
  • {m}
  • {m,n}

日付の形式が「dd M」になることが確実であればMMのyyyyは」、あなたのパターンは次のように表現する必要があります。

それとも、使用できます。

あまり厳密であるが、3部が一致するグループである捕獲されることを意図していることを確認します
@"Date:\s(?'date'\d+\s\w+\s\d+)" 

プレゼント。

*を使用する場合、欲張りの性質があるため、余分な注意が必要です。そうしないと正規表現が意図した以上にマッチしてしまうことがあります。

1

.*を使用すると、任意の長さに何も一致しているので、ファイル全体を一致:

私のコードはFILECONTENTSは、このスニペットのように見えるこの

pattern = @"Date:\s(?'date'\w.*)\s" 
rgx = new Regex(pattern, RegexOptions.Singleline); 
matches = rgx.Matches(fileContents); 

のように見えます。

だから、あなたの正規表現は次のようになります。

Date:\s(?'date'\d*\s\w*)\s 
  • \ D *
  • *数量詞([0-9]に等しい)の数字と一致する - ゼロと無限の時間、など多くの間の一致を
  • \ w *は、任意の単語文字に一致します([a-zA-Z0- 9_])
関連する問題