Regex 如何通过字符和字数检测字符串中是否包含印地语(devnagri)

Regex 如何通过字符和字数检测字符串中是否包含印地语(devnagri),regex,powershell,unicode,hindi,Regex,Powershell,Unicode,Hindi,下面是一个示例字符串- $string = "abcde वायरस abcde" 我需要检查这个字符串是否包含任何印地语(Devanagari)内容,如果是,还要检查字符和单词的计数。我想带有unicode字符类的正则表达式可以工作。但我无法找出正确的正则表达式语句 要找到答案,如果字符串包含印地语(Devanagari)字符,则需要有所有印地语字符的完整列表。根据,印地语字符是介于0x0900和0x097F之间的十六进制字符(十进制2304到2431) 如果集合中有任何字符,则正则表达式模

下面是一个示例字符串-

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

我需要检查这个字符串是否包含任何印地语(Devanagari)内容,如果是,还要检查字符和单词的计数。我想带有unicode字符类的正则表达式可以工作。但我无法找出正确的正则表达式语句

要找到答案,如果字符串包含印地语(Devanagari)字符,则需要有所有印地语字符的完整列表。根据,印地语字符是介于
0x0900
0x097F
之间的十六进制字符(十进制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 UnicodesShift=0x0900;
var hindiAlphabet=[];
for(变量i=0;i});要找出,如果字符串包含印地语(Devanagari)字符,则需要有所有印地语字符的完整列表。根据,印地语字符是介于
0x0900
0x097F
之间的十六进制字符(十进制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 UnicodesShift=0x0900;
var hindiAlphabet=[];
for(变量i=0;i});检查:您可以在正则表达式中指定unicode范围,并执行以下操作:
test=“abcdeवायरस abcde”;devanagariCount=test.match(新的RegExp('[\u0900-\u097F]+',“g”).length;nonDevanagariCount=test.match(新的RegExp('[^\u0900-\u097F]+',“g”)).length
有关范围,请参阅以下内容:选中此项:可以在正则表达式中指定unicode范围,并执行以下操作:
test=“abcdeवायरस abcde”;devanagariCount=test.match(新的RegExp('[\u0900-\u097F]+',“g”).length;nonDevanagariCount=test.match(新的RegExp('[^\u0900-\u097F]+',“g”)).length关于范围,请参考以下内容:为什么不直接使用类
[\u0900-\u097F]
re.search(r'\p{Devanagari},sname)
就可以了。为什么不直接使用类
[\u0900-\u097F]
re.search(r'\p{Devanagari},sname)
就可以了。