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)
就可以了。