我有一個.sln文件,我需要從中獲取一些數據。 .sln文件看起來像that。我需要這個文件的項目名稱。此外,我有一個代碼,將採取採取字符串,如果它看起來是正確的。所以我試着做一個正則表達式c + +中的正確表達式不正確
「Project(\」{[\ w-] +} \「)\ s * = \ s * \」(\ w +)\「[,\ s] + \ 「([\ W \] * vcxproj。)\」[,\ S] + \ 「({[\ W - ] +})\」」
#include <iostream>
#include <string>
#include <vector>
#include <regex>
#include <fstream>
using namespace std;
int main()
{
ifstream ifstr("C:\\Users\\Andrew\\Documents\\Visual Studio 2015\\Projects\\ConsoleApplication1\\ConsoleApplication1.sln");
string all;
//Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doctor", "dreryk\src\doctor\doctor.vcproj", "{5D031DBA-1903-4067-A2CE-01B104A08D48}"
regex projParse("Project\(\"\{[\w-]+\}\"\)\s*=\s*\"(\w+)\"[,\s]+\"([\w\\]*\.vcxproj)\"[,\s]+\"(\{[\w-]+\})\"");
ifstr.seekg(0);
string pth, sol;
match_results<string::const_iterator> what;
while (getline(ifstr, sol))
{
string::const_iterator start = sol.begin();
string::const_iterator end = sol.end();
if (regex_search(start, end, what, projParse))
{
cout << what[0] << endl;
}
}
}
當我嘗試這個代碼它說有一個錯誤。我不知道如何解決它。
錯誤是:微軟C++異常:
在0x775EC42D在ConsoleApplication1.exe中未處理的異常的std :: regex_error內存位置0x0031E890。
什麼是實際你得到的錯誤? – NathanOliver
轉義正則表達式字符串文字中的斜槓。 –
我怎麼能逃脫他們? – koshachok