c++正则表达式
C++ Regular Expressions
我是正则表达式的新手-我在c++中使用Poco从字符串中提取IP地址,并(尝试)将所有IP匹配放入字符串向量中:
string result = tcpClient.receiveRaw();
RegularExpression re("b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)b");
RegularExpression::MatchVec matches;
re.match(result, 0, matches);
IPlist = result.substr(matches[1].offset, matches[1].length);
我不认为最后一行是正确的(不确定它是如何工作的)我试图从初始字符串拉所有的IP地址,并将它们添加到字符串向量。
表达式可以缩短,b
可能需要另一个escape(但我不熟悉Poco,所以我可能会离开)。试一下:
RegularExpression re("\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b");
为什么不直接使用C POSIX正则表达式呢?下面是文档:
http://pubs.opengroup.org/onlinepubs/007908799/xsh/regcomp.html除此之外,这里到底出了什么问题?你没有具体说明实际问题。我不熟悉你使用的类,但看起来没什么明显的问题,除了我们不知道IPlist是什么。它看起来是一个列表,但被设置为等于单个字符串值。我怀疑这里的逻辑可能不可取。
相关文章:
- 使用正则表达式regex_search在字符串中查找字符串
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- C++正则表达式无限循环
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- 定义有趣的宏和正则表达式在Z3 C++绑定
- 带有多个字符分隔符的正则表达式
- C++ 使用增强正则表达式库时断言崩溃
- 有人可以帮助我处理正则表达式吗?
- 使用正则表达式获取大括号块的列表
- 正则表达式以匹配数字的重复模式,后跟任何类型的分隔符?
- 组合正则表达式部分使用 | 不起作用的 C++
- 为什么C++正则表达式这么慢?
- 如何使HTML5电子邮件验证正则表达式在C++中工作?
- 在C++中实现正则表达式
- C++正则表达式替换整个单词
- 用C++编写正则表达式的正确方法是什么?
- 如何从Stroustrup的C++书中解释这个正则表达式?
- 为什么这个正则表达式C++在括号表达式中抛出无效范围异常?
- C++:匹配正则表达式,什么是匹配?
- C++:正则表达式匹配代码,打印多个匹配项?