gpt4 book ai didi

regex - 如何通过字符和单词数检测字符串中是否包含印地文(devnagri)

转载 作者:行者123 更新时间:2023-12-03 00:23:15 26 4
gpt4 key购买 nike

以下是示例字符串-

$string = "abcde वायरस abcde"

我需要检查天气,此字符串包含任何北印度语(Devanagari)内容,如果包含,则包含字符和单词的数量。我猜想带有Unicode字符类的正则表达式可以工作 http://www.regular-expressions.info/unicode.html。但是我无法找出正确的正则表达式语句。

最佳答案

要找出答案,如果字符串包含北印度文(Devanagari)字符,则需要具有所有北印度文字符的完整列表。根据this website,印地语字符是0x09000x097F之间的十六进制字符(十进制2304至2431)。

如果集合中有任何这些字符,则正则表达式模式需要匹配。因此,您可以使用模式(实际上是一组字符)来匹配字符串,如下所示:
[\u0900\u0901\u0902 ... \u097D\u097E\u097F]
由于手动记下该字符列表非常麻烦,因此可以通过迭代从2304到2431的十进制字符或十六进制字符来生成此字符串。

要计算包含至少一个印地语字符的所有单词,可以使用以下模式。它包含单词周围的空格(\s)或单词周围的开头(^)或结尾($),以及一个全局标志,以匹配每次出现(/g):
/(?:^|\s)[\u0900\u0901\u0902 ... \u097D\u097E\u097F]+?(?:\s|$)/g
这是JavaScript的实时实现:

var numberOfHindiCharacters = 128;
var unicodeShift = 0x0900;
var hindiAlphabet = [];
for(var i = 0; i < numberOfHindiCharacters; i++) {
hindiAlphabet.push("\\u0" + (unicodeShift + i).toString(16));
}

var regex = new RegExp("(?:^|\\s)["+hindiAlphabet.join("")+"]+?(?:\\s|$)", "g");
var string1 = "abcde वायरस abcde";
var string2 = "abcde abcde";

[ string1.match(regex), string2.match(regex) ].forEach(function(match) {
if(match) {
console.log("String contains " + match.length + " words with Hindi characters only.");
} else {
console.log("String does NOT contain any words with Hindi characters only.");
}
});

关于regex - 如何通过字符和单词数检测字符串中是否包含印地文(devnagri),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41356013/

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