为什么此代码不能取代' Mozilla / 5.0'到我的用户代理'?
Regex在Notepad ++中运行良好,但在我的控制台应用程序中无效。
#include <regex>
#include <string>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
string header =
"GET / HTTP/1.1\r\n\
Host: com.com\r\n\
User-Agent: Mozilla/5.0\r\n\
Connection: keep-alive";
tr1::regex rx("^(User-Agent:).+$", regex_constants::icase);
header = regex_replace(header, rx, "$1 My User Agent", regex_constants::format_first_only);
return 0;
}
答案 0 :(得分:5)
问题在于^
表示字符串的开头,而不是行的开头。
您可以使用以下正则表达式,它可以正常工作:
((?:^|\r\n)User-Agent:).+(?=$|\r\n)