如何理解 boost::regex 的哪一部分无法匹配/搜索
我使用 boost::regex
来匹配(更好的说法是 boost::regex_search
)文本与正则表达式。
这个不匹配,我的正则表达式真的很大。
您知道库中是否有任何函数告诉我正则表达式的哪一部分无法匹配?
我正在使用 LINUX/gcc
std::string text; // whatever
boost::regex rgx( "(\\w+) (\\d+) (\\s+)" );
boost::smatch m;
if( !boost::regex_search( text, m, rgx ) ){
// how to know where (\\w+) or (\\d+) or (\\s+) failed?
}
I am using boost::regex
to match (better to say boost::regex_search
) a text vs a regular expression.
This one doesn't match and my regex is really huge.
Do you know if in the library is there any function telling me which part of the regex failed to match?
I am using LINUX/gcc
std::string text; // whatever
boost::regex rgx( "(\\w+) (\\d+) (\\s+)" );
boost::smatch m;
if( !boost::regex_search( text, m, rgx ) ){
// how to know where (\\w+) or (\\d+) or (\\s+) failed?
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
据我所知,库中没有可用的工具,但我使用的是 Boost 版本 1.28.0。
您是否尝试彼此独立地执行 (\w+)、(\d+) 和 (\s+) ?其中至少有一个应该匹配失败。
There is no tool for that in the library to my knowledge, but I was using Boost version 1.28.0.
Did you try to execute (\w+), (\d+) and (\s+) independantly of each other? At least one of them should fail matching.
尽快抓住琪琪。它是测试和使用正则表达式的宝贵工具。
如果您使用的是基于 Debian 的发行版,它应该位于基本存储库中。
Grab kiki asap. It's an invaluable tool for testing and playing with regex.
If you are using a debian based distro, it should be in the base repositories.