我刚刚开始了解正则表达式,并且正在使用 Boost Regex 库。
我需要使用包含特定 URL 的正则表达式,但它令人窒息,因为显然 URL 中存在为正则表达式保留的字符,需要转义。
Boost 库中是否有任何函数或方法可以转义此类用途的字符串?我知道大多数其他正则表达式实现中都有这样的方法,但我在 Boost 中没有看到这样的方法。
或者,是否有需要转义的所有字符的列表?
. ^ $ | ( ) [ ] { } * + ? \
讽刺的是,您可以使用正则表达式来转义您的 URL,以便将其插入到正则表达式中。
const boost::regex esc("[.^$|()\\[\\]{}*+?\\\\]");
const std::string rep("\\\\&");
std::string result = regex_replace(url_to_escape, esc, rep,
boost::match_default | boost::format_sed);
(旗帜boost::format_sed http://www.boost.org/doc/libs/1_56_0/libs/regex/doc/html/boost_regex/ref/match_flag_type.html指定使用sed的替换字符串格式。在 sed 中,转义&
将输出与整个表达式匹配的任何内容)
或者,如果您对 sed 的替换字符串格式不满意,只需将标志更改为boost::format_perl
,你可以使用熟悉的$&
引用与整个表达式匹配的任何内容。
const std::string rep("\\\\$&");
std::string result = regex_replace(url_to_escape, esc, rep,
boost::match_default | boost::format_perl);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)