gpt4 book ai didi

c# - 使用 .NET Regex 进行泰米尔语全词搜索

转载 作者:太空宇宙 更新时间:2023-11-03 12:20:04 26 4
gpt4 key购买 nike

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

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

它在拉丁语中按预期工作,但对于泰米尔语,此表达式返回奇怪的结果。我已经阅读了有关正则表达式中的 Unicode 字符的信息,但这对我来说似乎没什么帮助。我可能需要确定在哪里找到单词边界以及为什么。

举个例子:对于 "\bஅம்மா\b" 模式正则表达式在அம்மாவிடம்和அம்மாக்கள்记录,但不在原始அம்மா记录中。

最佳答案

“அம்மா”单词的最后一个字符是 0BBE TAMIL VOWEL SIGN AA,它是一个组合标记(在正则表达式中,它可以与 \p{M} 匹配)。

作为\b只匹配字符串的开头/结尾和单词字符或单词和非单词字符之间,它不会在字符和非单词字符之后匹配。

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

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

参见 this regex demo .

在这里,(?<!\w)如果 searchText 之前有单词 char,则匹配失败和 (?!\w)如果要查找的文本后有单词 char,则匹配失败。请注意,您也可以使用 Regex.Escape(searchText)如果文本可以包含特殊的正则表达式字符。

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

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

参见 this regex demo .

(?<![\p{L}\p{M}])(?![\p{L}\p{M}]) lookarounds 的工作方式与上面的类似,只是如果搜索短语的两边有字母或组合标记,它们将无法匹配。

关于c# - 使用 .NET Regex 进行泰米尔语全词搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47789670/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com