none
正規表現で一致させるには? RRS feed

  • 質問

  • いつもお世話になります。
    VisualC#2010、WindowsXPでの動作について質問があります。
    正規表現で

    寂しい
    淋しい
    さみしい
    さみしくなる。

    などに一致させるには、どのようにすればよいでしょう。
    × if (Regex.Match(text,"[^さみ|^寂|^淋]し[い|く]").Success)
    × if (Regex.Match(text,"^[(さみ)|寂|淋]し[い|く]").Success)
    2番目で、
    寂しい
    淋しい
    には一致するのですが。
    if (Regex.Match(text,"^[(さみ)|寂|淋]+し[い|く]+").Success)
    としないと、

    にも一致しますか?

    2010年11月4日 3:23

回答

  • >などに一致させるには

     

    正規表現とは、特定のパターンに一致するかどうか検索したり一致する場合置換

    したいといった目的で利用されますが、「などに一致」とありますので、他のパターン

    もあるということですよね。

    「さみしい」ということに関わる文字?と思われるのですが、そのパターン全てを

    まずはピックアップし、その全てと一致するパターンを作ることになると思います。

    なので、まずはパターンを洗い出す事が先と思います。

    • 回答の候補に設定 山本春海 2010年11月15日 7:21
    • 回答としてマーク 山本春海 2010年11月25日 8:08
    2010年11月4日 3:33
  • "^(さみ|寂|淋)し[いく]"
    とかかな。

    • 回答の候補に設定 山本春海 2010年11月15日 7:21
    • 回答としてマーク 山本春海 2010年11月25日 8:08
    2010年11月4日 8:49
  • パターンを洗い出すという事の補足として、


    寂しい、淋しい、さみしい、さみしくなる。 だけに一致という話であれば、

    (寂しい|淋しい|さみしい|さみしくなる。) と書いたほうが分かりやすいですし、

     

    寂しい、しくなる。、淋しい、しくなる。さみしい、さみしくなる。のような語尾の混合パターンであれば、

    (寂|淋|さみ)(しい|しくなる。) 又は、(寂|淋|さみ)し(い|くなる。) のようになると思いますし、

     

    その他に、「~しさ」などもパターンに含め、語尾は「なる。」である必要がない場合は、

    (寂|淋|さみ)(しい|しさ|しく) 又は、(寂|淋|さみ)し[いさく] のようになると思います。

     

    また、寂は「さび」と読みますので、「さび」も含めて、

    (寂|淋|さみ|さび)(しい|しさ|しく) のようになると思います。

     

    一致させたいパターンの出現場所が、必ず文字列の先頭でなければならない場合は「^」をつけ

    ^(寂|淋|さみ|さび)(しい|しさ|しく) のようになっていきます。

     

    そういったことから、どういったパターンと一致させることを望まれているかが重要になります。

    http://msdn.microsoft.com/ja-jp/library/az24scfc

    • 回答の候補に設定 山本春海 2010年11月15日 7:21
    • 回答としてマーク 山本春海 2010年11月25日 8:08
    2010年11月4日 10:02

すべての返信

  • >などに一致させるには

     

    正規表現とは、特定のパターンに一致するかどうか検索したり一致する場合置換

    したいといった目的で利用されますが、「などに一致」とありますので、他のパターン

    もあるということですよね。

    「さみしい」ということに関わる文字?と思われるのですが、そのパターン全てを

    まずはピックアップし、その全てと一致するパターンを作ることになると思います。

    なので、まずはパターンを洗い出す事が先と思います。

    • 回答の候補に設定 山本春海 2010年11月15日 7:21
    • 回答としてマーク 山本春海 2010年11月25日 8:08
    2010年11月4日 3:33
  • "^(さみ|寂|淋)し[いく]"
    とかかな。

    • 回答の候補に設定 山本春海 2010年11月15日 7:21
    • 回答としてマーク 山本春海 2010年11月25日 8:08
    2010年11月4日 8:49
  • パターンを洗い出すという事の補足として、


    寂しい、淋しい、さみしい、さみしくなる。 だけに一致という話であれば、

    (寂しい|淋しい|さみしい|さみしくなる。) と書いたほうが分かりやすいですし、

     

    寂しい、しくなる。、淋しい、しくなる。さみしい、さみしくなる。のような語尾の混合パターンであれば、

    (寂|淋|さみ)(しい|しくなる。) 又は、(寂|淋|さみ)し(い|くなる。) のようになると思いますし、

     

    その他に、「~しさ」などもパターンに含め、語尾は「なる。」である必要がない場合は、

    (寂|淋|さみ)(しい|しさ|しく) 又は、(寂|淋|さみ)し[いさく] のようになると思います。

     

    また、寂は「さび」と読みますので、「さび」も含めて、

    (寂|淋|さみ|さび)(しい|しさ|しく) のようになると思います。

     

    一致させたいパターンの出現場所が、必ず文字列の先頭でなければならない場合は「^」をつけ

    ^(寂|淋|さみ|さび)(しい|しさ|しく) のようになっていきます。

     

    そういったことから、どういったパターンと一致させることを望まれているかが重要になります。

    http://msdn.microsoft.com/ja-jp/library/az24scfc

    • 回答の候補に設定 山本春海 2010年11月15日 7:21
    • 回答としてマーク 山本春海 2010年11月25日 8:08
    2010年11月4日 10:02