C# 使用.NET正则表达式进行泰米尔语全文搜索

C# 使用.NET正则表达式进行泰米尔语全文搜索,c#,.net,regex,tamil,C#,.net,Regex,Tamil,我有一个充满泰米尔语单词和搜索字符串的网格。我需要通过网格记录实现一个完整的单词搜索。我使用.NET正则表达式类来实现这种方法。听起来很简单,我以前做的是: 字符串模式=@“\b”+searchText+@“\b” 它在拉丁语中的效果与预期一样,但在泰米尔语中,该表达式返回奇怪的结果。我读过正则表达式中的Unicode字符,但这似乎对我没有多大帮助。我可能需要确定单词边界是在哪里找到的,以及为什么 例如: 对于“\bஅம்மா\b“pattern Regex在中找到匹配项 அம்மாவிடம்

我有一个充满泰米尔语单词和搜索字符串的网格。我需要通过网格记录实现一个完整的单词搜索。我使用.NET正则表达式类来实现这种方法。听起来很简单,我以前做的是:

字符串模式=@“\b”+searchText+@“\b”

它在拉丁语中的效果与预期一样,但在泰米尔语中,该表达式返回奇怪的结果。我读过正则表达式中的Unicode字符,但这似乎对我没有多大帮助。我可能需要确定单词边界是在哪里找到的,以及为什么

例如: 对于
“\bஅம்மா\b“
pattern Regex在中找到匹配项 அம்மாவிடம் 及அம்மாக்கள் 记录,但不是原件அம்மா 记录。

中的最后一个字符“அம்மா" 话是‎0BBE泰米尔语元音符号AA,它是一个组合标记(在正则表达式中,它可以与
\p{M}
匹配)

由于
\b
仅在字符串的开头/结尾与单词字符或单词与非单词字符之间匹配,因此字符与非单词字符之后不匹配

在这种情况下,请使用通常的解决方法

var pattern = $@"(?<!\w){searchText}(?!\w)";


(?和
(?![\p{L}\p{M}])
环顾词的工作原理与上面的环顾词类似,只是如果搜索短语的两侧都有字母或组合标记,它们就无法匹配。

最后一个字符是‎0BBE泰米尔语元音符号AA,它属于
\p{M}
Unicode类(组合标记)。使用
string pattern=@”(?感谢您的建议,但结果是一样的,很遗憾。请提供一个示例字符串和预期输出。上面的正则表达式。奇怪的是,一些在线正则表达式测试工具可能会根据模式返回良好的结果,但在应用程序本身中,这是一个持续的失败。我可能应该提到我使用的是MVS的17 aNET Framework 4.6。这里有一个指向的链接。
var pattern = $@"(?<![\p{{L}}\p{{M}}]){searchText}(?![\p{{L}}\p{{M}}])";