2011-09-02 8 views
1

存在しなければならない複数の文字列のテキストを検証するには正規表現が必要です。確かに 正規表現を使用してテキスト内の複数の文字列を一致させるにはどうすればよいですか?

  • ヘンリーは
  • サリーは3人の男の子と踊った野生の少年が昨夜
  • である私は

    1. ロージーは男の子が野生
    2. メリーズ野生の男の子は非常に狂って行かせたテキストを持っていると言います

    そして、「男の子」と「野生」(任意の順序)の両方を持つ文章に一致させたいと思います。正しい一致は1と2ですが、3と4は一致しません。

    誰か?あなたはもちろん、それを使用している場所に応じて適切なエスケープ処理して

    +0

    あなたが正規表現に使用するどのようなツールを述べる場合は、あなたの質問に答える方がはるかに簡単 –

    +0

    キリルは以下の罰金の提案を行いましたしかし、わかりやすくするために、私はASP.NET/C#でRegExクラスを使用しています。 – Alex

    答えて

    3
    .*(?=\bboys\b).*(?=\bwild\b)|.*(?=\bwild\b).*(?=\bboys\b) 
    
    0

    (^.*boys.*wild.* $|^.*wild.*boys.*$)

    3

    http://www.regular-expressions.info/reference.html

    /.*?wild.*?boys.*|.*?boys.*?wild.*/ 
    

    あなたはただ一人で.*は貪欲で、文字列全体を消費しますので、.*?を使用します。貪欲な試合では、 "野生"と "少年"との対戦に残るキャラクターはないので、常に失敗するでしょう。

    +1

    これは、どちらも含まれていないテキストを検索します。 – mcrumley

    3

    正規表現はここでは過剰です。これは正常に動作し、より読みやすいです:

    for (String str : new String[] { "Rosy made the boys go wild", "Marys wild boys are very crazy indeed", 
         "Henry is a wild boy", "Sally danced with 3 boys last night" }) { 
        if (str.contains("wild") && str.contains("boys")) { 
         System.out.println(str); 
        } 
    } 
    

    プリント:

    Rosy made the boys go wild 
    Marys wild boys are very crazy indeed 
    
    +0

    OPがJavaを使用していることをどのように知っていますか? – Daniel

    +0

    ここであなたの意見に同意します。しかし、私はより複雑な正規表現のサポートを含む、より柔軟な検証システムのためにこれを必要とします... – Alex

    関連する問題