2011-10-26 5 views
2

私はブログ投稿に存在する場合と存在しない場合があるフレーズを見つけるためにC#を使用しています。私はターゲットフレーズを含む文全体をキャプチャする必要があります。ターゲットフレーズで文章をキャプチャする正規表現

私はstring.containsメソッドを使用することを考えましたが、私が望むのはターゲットフレーズとその含む文章です。

例:

I dont want this sentence. I also don't want this setence. But I do want this sentence. 

だからここターゲットフレーズは、次のようになります。「私がやる」と正規表現は、文を含む全体を返すべき「しかし、私はこの文をしたいです。」

ありがとうございました。 アーロン

答えて

2

この正規表現:あなたが複数の行を心配している場合RegexOptions.Singleline上

But I do want this sentence. 

入れます:

I dont want this sentence. I also don't want this setence. But I do want this sentence. 

戻り値:あなたの入力に適用

resultString = Regex.Match(subjectString, @"(?<=^|\.)[^.]*?(?=\bI do\b).*(\.|$)").Value; 

+0

thx。すばらしく働く – Aaron

1

私は正規表現のか分からないが、あなたはSplit機能の組み合わせとContains機能を使用して、このような何かを書くことができ:

string DoesBlogContainSentence(string blog, string target) 
{ 
    string[] blogSentences = blog.Split(new char[] {'.'}); 

    foreach(string sentence in blogSentences) 
    { 
     if(sentence.Contains(target)) 
     { 
      return sentence; 
     } 
    } 

    return string.Empty; 
} 
+0

「。」で分割する単独では必ずしも文を返す必要はありません。たとえば、10進数の場合、これは分割されます。 – wdavo

1

あなたはブログの記事を分割することができそれぞれの文章で目的のフレーズを検索します。

など。

string data = "I dont want this sentence. I also don't want this setence. But I do want this sentence."; 
    string targetPhrase = "I do"; 

    string[] sentences = Regex.Split(data, "\\.\\s"); 

    foreach (string sentence in sentences) 
    { 
    if (Regex.IsMatch(sentence, "\\s" + targetPhrase + "\\s")) 
    { 
     //..... 
    } 
    } 
関連する問題