私はタミール語と検索文字列でいっぱいのグリッドを持っています。私は、グリッドレコードを通してフルワード検索を実装する必要があります。私はそのアプローチに.NET Regexクラスを使用しています。それはかなりシンプルに聞こえる、私がしたことは:.NET Regexでタミル語のフルワード検索
string pattern = @"\b" + searchText + @"\b"
です。
ラテン語の言語では正常に動作しますが、タミル語の場合、この式は奇妙な結果を返します。私は正規表現でUnicode文字について読んだことがありますが、それは私には非常に役に立つとは言えません。おそらく私が必要とするのは、単語の境界が見つかった場所とその理由を判断することです。一例として、
:正規表現は、元のஅம்மாレコードで でマッチを見つけஅம்மாவிடம்とஅம்மாக்கள்記録ではなく、"\bஅம்மா\b"
パターンについては 。
最後の文字は* 0BBE TAMIL VOWEL SIGN AA *であり、 '\ p {M}' Unicodeクラス(結合マーク)に属します。代わりに 'string pattern = @"(?<!\ w) "+ searchText + @"(?!\ w) "'を使用してください。または、文字列/発音区別記号の中にマッチするのを避けたい場合、 'string pattern = @ '(?<![!\ p {L} \ p {M}])" + searchText + L} \ p {M}]) "' –
提案していただきありがとうございますが、残念ながら結果は同じです。 – Dmitry
文字列の例と期待される出力を提供してください。上記の正規表現は[全体の単語として 'அம்மா'にのみマッチします(http://regexstorm.net/tester?p=%28%3f%3c!%5cw%29%e0%ae%85%e%ae%aeae %e0%af%8d%e0%ae%ee%e0%ae%be%28%3f!%5cw%29&i = Regex + found +が+ in +%22%e0%ae%85%e0%ae%ae% e0%af%8d%e0%ae%ee%e0%ae%b5%e0%ae%bf%e0%ae%9f%e0%ae%ee%e0%af%8d%22 + +%22%e0%ae%85%e0%ae%ee%e0%af%8d%e0%ae%ee%e0%ae%e%%ee%95%e0%af%8d%e0%ae% 95%e0%ae%b3%e0%af%8d%22 +レコード+ but + not + in + the +オリジナル+%22%e0%ae%85%e0%ae%ae%e0%af%8d%e0% ae%ae%e0%ae%は%22 +レコードである)。 –