C++;正则表达式 我对正则表达式是新的——我在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);

C++;正则表达式 我对正则表达式是新的——我在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);,c++,regex,poco-libraries,C++,Regex,Poco Libraries,我不认为最后一行是正确的(不确定它是如何工作的),我正在尝试从初始字符串中提取所有IP地址,并将它们添加到字符串向量中。为什么不在中使用C POSIX正则表达式呢?以下是文档: 除此之外,这里到底出了什么问题?您没有指定实际的问题。我不熟悉您正在使用的类,但除了我们不知道什么是IPlist之外,没有任何东西看起来明显损坏。它似乎是一个列表,但被设置为等于一个字符串值。我怀疑其中的逻辑可能不可取。表达式可以缩短,而\b可能需要另一个转义(但我不熟悉Poco,因此可能会偏离太远)。试试这个: Re

我不认为最后一行是正确的(不确定它是如何工作的),我正在尝试从初始字符串中提取所有IP地址,并将它们添加到字符串向量中。

为什么不在中使用C POSIX正则表达式呢?以下是文档:


除此之外,这里到底出了什么问题?您没有指定实际的问题。我不熟悉您正在使用的类,但除了我们不知道什么是IPlist之外,没有任何东西看起来明显损坏。它似乎是一个列表,但被设置为等于一个字符串值。我怀疑其中的逻辑可能不可取。

表达式可以缩短,而
\b
可能需要另一个转义(但我不熟悉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");

我不知道Poco的事。但是我建议大家看看boost@ChristianSeverin的正则表达式。请注意,你所做的每一次编辑都会将问题推到头版,并且会产生很多噪音。如果您认为应该重新标记,请首先询问。