c++ - 阿拉伯语正则表达式匹配 - C++
问题描述
我需要找到给定的字符串有阿拉伯字母。它的范围从\u0600-\u06FF\u0750-\u077F
.
我编写了以下程序:
std::vector<STD_STRING> strFieldvalues;
std::string pattern = "/[\u0600-\u06FF\u0750-\u077F]/";
std:string strFieldVal;
gboolArabic = false;
int i = 0;
int j = 0;
for ( ;i < fieldValues.size() && j< fieldNames.size(); i++,j++) //for loop its entering
{
strFieldVal=fieldValues[i].GetPString();
if (std::regex_match(strFieldVal, std::regex("(sub)(/[\u0600-\u06FF\u0750-\u077F]/)")))
{
gboolArabic = true;
gArabicFieldNames.push_back(fieldNames[j].GetPString());
}
}
strFieldVal 以 <0067><062A><0627> 的形式出现。但它没有进入 if 块。谁能帮忙。
解决方案
看来您需要删除正则表达式两端的正则表达式分隔符并将+
量词应用于正则表达式模式,因为regex_match
需要完整的字符串匹配:
#include <iostream>
#include <regex>
int main() {
std::string strFieldVal("المتحدة");
std::regex pattern("[\u0600-\u06FF\u0750-\u077F]+");
if (std::regex_match(strFieldVal, pattern))
{
std::cout << strFieldVal << " is Arabic.\n";
}
return 0;
}
请参阅C++ 演示,输出:المتحدة is Arabic.
.
推荐阅读
- dsl - 我可以设置功能在空手道中运行的顺序吗?
- tensorflow - 用于大型 HDF5 文件的 TensorFlow 数据集管道
- pandas - Pandas 选择 DataFrame 中存在相对列值的行
- image - 我怎么能从零开始构建 docker 镜像?
- json - HTTP POST 请求和基本身份验证
- php - Laravel Session 在暂存环境中并不持久
- java - 如何查看 Netbeans 8.2 java 库编码
- javascript - 有什么方法可以“取消” promise.done() 被调用?
- awk - 如何将文件中的整数更改为十进制值
- xamarin.forms - 发布模式应用程序未安装在其他设备上