トップ回答者
正規表現で一致させるには?

質問
-
いつもお世話になります。
VisualC#2010、WindowsXPでの動作について質問があります。
正規表現で寂しい
淋しい
さみしい
さみしくなる。などに一致させるには、どのようにすればよいでしょう。
× if (Regex.Match(text,"[^さみ|^寂|^淋]し[い|く]").Success)
× if (Regex.Match(text,"^[(さみ)|寂|淋]し[い|く]").Success)
2番目で、
寂しい
淋しい
には一致するのですが。
if (Regex.Match(text,"^[(さみ)|寂|淋]+し[い|く]+").Success)
としないと、
し
にも一致しますか?
回答
-
-
パターンを洗い出すという事の補足として、
寂しい、淋しい、さみしい、さみしくなる。 だけに一致という話であれば、
(寂しい|淋しい|さみしい|さみしくなる。) と書いたほうが分かりやすいですし、
寂しい、寂しくなる。、淋しい、淋しくなる。、さみしい、さみしくなる。のような語尾の混合パターンであれば、
(寂|淋|さみ)(しい|しくなる。) 又は、(寂|淋|さみ)し(い|くなる。) のようになると思いますし、
その他に、「~しさ」などもパターンに含め、語尾は「なる。」である必要がない場合は、
(寂|淋|さみ)(しい|しさ|しく) 又は、(寂|淋|さみ)し[いさく] のようになると思います。
また、寂は「さび」と読みますので、「さび」も含めて、
(寂|淋|さみ|さび)(しい|しさ|しく) のようになると思います。
一致させたいパターンの出現場所が、必ず文字列の先頭でなければならない場合は「^」をつけ、
^(寂|淋|さみ|さび)(しい|しさ|しく) のようになっていきます。
そういったことから、どういったパターンと一致させることを望まれているかが重要になります。
すべての返信
-
-
パターンを洗い出すという事の補足として、
寂しい、淋しい、さみしい、さみしくなる。 だけに一致という話であれば、
(寂しい|淋しい|さみしい|さみしくなる。) と書いたほうが分かりやすいですし、
寂しい、寂しくなる。、淋しい、淋しくなる。、さみしい、さみしくなる。のような語尾の混合パターンであれば、
(寂|淋|さみ)(しい|しくなる。) 又は、(寂|淋|さみ)し(い|くなる。) のようになると思いますし、
その他に、「~しさ」などもパターンに含め、語尾は「なる。」である必要がない場合は、
(寂|淋|さみ)(しい|しさ|しく) 又は、(寂|淋|さみ)し[いさく] のようになると思います。
また、寂は「さび」と読みますので、「さび」も含めて、
(寂|淋|さみ|さび)(しい|しさ|しく) のようになると思います。
一致させたいパターンの出現場所が、必ず文字列の先頭でなければならない場合は「^」をつけ、
^(寂|淋|さみ|さび)(しい|しさ|しく) のようになっていきます。
そういったことから、どういったパターンと一致させることを望まれているかが重要になります。