|
分類:[C#]
はじめまして。 C#での文字列検索についての質問です。
ある文字列の中から指定文字列を以下の4パターンで検索したいです。
指定文字列の @先頭に単語境界あり、末尾に単語境界なし A先頭に単語境界なし、末尾に単語境界あり B先頭に単語境界あり、末尾に単語境界あり C先頭に単語境界なし、末尾に単語境界なし
検索対象の文字列、指定文字列は英語、日本語、イタリア語などと多言語の文字です。
正規表現の\bを使ってやってみましたが、日本語検索の時に引っかかりません。
使用したパターンは @string pattern = @"\b" + FindStr; Astring pattern = FindStr + @"\b"; Bstring pattern = @"\b" + FindStr + @"\b"; Cstring pattern = FindStr;
検索処理は以下を使いました。 Regex.Matches(str, pattern, RegexOptions.IgnoreCase | RegexOptions.ECMAScript)
・str = AreA bAre ArenA mAre A bdc A FindStr = A では、@〜Cのパターンで、すべてのAを検索できました。
・str = A4あA5あA0あA6あA7あA2あ A1 ああ A3 FindStr = A0、A1、...、A7 では、@〜Cのパターンで、A0〜A7を検索できました。
・str = 先頭あワードあ文字あ境界あ以外あまたはあ 列 ああ 行 FindStr = 文字、列、または、行、先頭、ワード、境界、以外 では、 @のパターンで、「先頭」、「境界」を検索できません。 Aのパターンで、「ワード」、「以外」を検索できません。 Bのパターンで、「列」、「行」を検索できません。 Cのパターンで、「文字」、「または」を検索できました。
@日本語検索の場合、単語の境界というものがないでしょうか? A正規表現のパターンを変えれば、4パターンでの検索ができますでしょうか? もしできるなら、どう書けば良いでしょうか? B正規表現に拘っていませんので、もし正規表現できないのであれば、 C#で他に単語の境界がわかる方法がありますでしょうか?
C#が詳しくなくて、質問内容もわかりにくいと思いますが、 ご教授をお願いいたします。
|