C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 156 を表示中)
■90366 / )  C#での文字列検索
□投稿者/ ameagari (1回)-(2019/03/04(Mon) 17:13:23)

分類:[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#が詳しくなくて、質問内容もわかりにくいと思いますが、
ご教授をお願いいたします。

返信 編集キー/


管理者用

- Child Tree -