泰米尔语言全词搜索带有.net Regex



我的网格充满了泰米尔语单词和一个搜索字符串。我需要通过网格记录实现全词搜索。我正在使用.NET REGEX类作为该方法。听起来很简单,我以前做的是:

字符串模式= @" b" searchText @" b"

它在拉丁语中按预期工作,但对于泰米尔语来说,此表达式返回了奇怪的结果。我已经阅读了正式表达式中的Unicode角色,但这对我似乎并没有什么帮助。我可能需要的是确定在哪里找到边界和原因。

例如:对于"bஅம்மாb"模式,以下是在அம்மாவிடம்和அம்மாக்கள்记录,但没有在原始அம்மா记录中。

"அம்மா"字中的最后一个字符是 0bbe泰米尔元音符号AA ,它是一个组合标记(在Regex中,可以与p{M}匹配)。

作为 b仅在字符串的启动/结尾和单词char之间或单词和非字char之间匹配,它在char和非字char之后不匹配。

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

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

请参阅此正则演示。

在这里,如果在searchText之前有一个字char,并且(?!w)在文本后有一个字char,则(?<!w)将使匹配失败。注意,如果文本可以包含特殊的正则chars。

,您也可以使用Regex.Escape(searchText)

或,如果您想避免在基本字母/变音符号内时匹配,请使用

var pattern = $@"(?<![p{{L}}p{{M}}]){searchText}(?![p{{L}}p{{M}}])";

请参阅此正则演示。

(?<![p{L}p{M}])(?![p{L}p{M}]) loughounds的工作方式与上面的工作类似,只是在搜索短语的两侧有字母或组合标记时,它们会失败。

相关内容

  • 没有找到相关文章

最新更新