我有这样一个正则表达式
boost::regex isAgent
("Mozilla/\d[.]\d \(Windows NT \d[.]\d; (Win64; x64;|WOW64;)?(.*?)\) Gecko/\d{8} Firefox/\d\d[.]\d",
boost::regex::perl);
if (boost::regex_search(auxAgent.c_str(), match, reg)){...}...
我知道在auxAgent
我的确有Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0
在此页面上 http://gskinner.com/RegExr/?37em3一切都匹配但不是提升,我做错了什么?
答案 0 :(得分:1)
在C ++中,需要转义字符\
。因此,如果你想逃避任何事情,你需要做\\
。这应该解决问题。每当你在字符串中使用反斜杠时,你需要像那样逃避它。如果您需要使用正则表达式在字符串中找到它,则需要使用\\\\
进行搜索。
答案 1 :(得分:1)
我认为Pawel Stawarz是正确的。你应该逃避反斜杠。但是这里有你需要逃脱的所有角色:
^。 $ | ()[] * +? \ /
将\替换为\\
和
替换?用\?
等