下面是一个示例字符串 -
$string = "abcde वायरस abcde"
我需要检查天气这个字符串是否包含任何印地语(梵文)内容,如果是,则包含字符和单词的数量。我想unicode字符类的正则表达式可以工作http://www.regular-expressions.info/unicode.html。但我无法弄清楚正确的正则表达式语句。
答案 0 :(得分:4)
要找出,如果字符串包含印地语(梵文)字符,则需要包含所有印地语字符的完整列表。根据{{3}},印地语字符是0x0900
和0x097F
之间的十六进制字符(小数2304到2431)。
正则表达式模式需要匹配,如果这些字符中的任何一个在集合中。因此,您可以使用模式(实际上是一组字符)来匹配字符串,如下所示:
[\u0900\u0901\u0902
... \u097D\u097E\u097F]
因为手动编写这个字符列表相当麻烦,你可以通过迭代从2304到2431或十六进制字符的十进制字符来生成这个字符串。
要计算包含至少一个印地语字符的所有单词,您可以使用以下模式。它包含单词周围的空格(\s
)或单词周围的开头(^
)或结尾($
),以及全局标记,以匹配每个出现的位置({ {1}}):
/g
... /(?:^|\s)[\u0900\u0901\u0902
以下是JavaScript中的实时实现:
\u097D\u097E\u097F]+?(?:\s|$)/g