提升正则表达式匹配

时间:2013-12-01 01:46:48

标签: c++ regex boost

我有这样一个正则表达式

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一切都匹配但不是提升,我做错了什么?

2 个答案:

答案 0 :(得分:1)

在C ++中,需要转义字符\。因此,如果你想逃避任何事情,你需要做\\。这应该解决问题。每当你在字符串中使用反斜杠时,你需要像那样逃避它。如果您需要使用正则表达式在字符串中找到它,则需要使用\\\\进行搜索。

答案 1 :(得分:1)

我认为Pawel Stawarz是正确的。你应该逃避反斜杠。但是这里有你需要逃脱的所有角色:

^。 $ | ()[] * +? \ /

将\替换为\\

替换?用\?

来源: How to escape a string for use in Boost Regex