0
我在C++中使用boost正則表達式解析文本文件。我正在尋找文件中的'\'字符。這個文件還包含一些Unicode字符「\ u」。那麼,有沒有辦法將'\'和'\ u'字符分開。 下面是我解析如何在C++中使用boost正則表達式分析轉義元素''和unicode字符' u'
"ID": "\u01FE234DA - this is id ",
"speed": "96\/78",
"avg": "\u01FE234DA avg\83"
繼test.txt的內容是我嘗試
#include <boost/regex.hpp>
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
const int BUFSIZE = 500;
int main(int argc, char** argv) {
if (argc < 2) {
cout << "Pass the input file" << endl;
exit(0);
}
boost::regex re("\\\\+");
string file(argv[1]);
char buf[BUFSIZE];
boost::regex uni("\\\\u+");
ifstream in(file.c_str());
while (!in.eof())
{
in.getline(buf, BUFSIZE-1);
if (boost::regex_search(buf, re))
{
cout << buf << endl;
cout << "(\) found" << endl;
if (boost::regex_search(buf, uni)) {
cout << buf << endl;
cout << "unicode found" << endl;
}
}
}
}
現在,當我使用上面的代碼將打印以下
"ID": "\u01FE234DA - this is id ",
(\) found
"ID": "\u01FE234DA - this is id ",
unicode found
"speed": "96\/78",
(\) found
"avg": "\u01FE234DA avg\83"
(\) found
"avg": "\u01FE234DA avg\83"
unicode found
而不是我想要以下
"ID": "\u01FE234DA - this is id ",
unicode found
"speed": "96\/78",
(\) found
"avg": "\u01FE234DA avg\83"
(\) and unicode found
我認爲代碼無法區分'\'和'\ u',但我不知道要在哪裏更改。
由於註釋掉的語句,您的當前代碼不會生成您顯示的輸出。另外,運行這兩項檢查有什麼問題? (無論如何這是一種有缺陷的方法,或許更好的辦法是不要一次使用正則表達式並檢查一個反斜槓,從頭到尾。「讓我們使用一個正則表達式 - 現在你有兩個問題。」) – usr2564301
如果我們保持此代碼爲然後是「ID」字段顯示兩次。即「ID」被認爲是Unicode和(\)發現一個 – kkard
我已經刪除了評論,現在我認爲代碼應該工作 – kkard