如何匹配" \ n"在Poco :: RegularExpression C ++?

时间:2017-08-09 17:03:36

标签: c++ regex pcre poco-libraries

我目前的代码是:

#include <iostream>
#include <Poco/Foundation.h>
#include <Poco/RegularExpression.h>

int main()
{
    Poco::RegularExpression regex("[A-Z]+\s+[A-Z]+");
    Poco::RegularExpression::MatchVec mvec;
    constad std::string astring = "ABC\nDEFG";

    int matches = regex.match(astring,0,mvec);

    std::cout << "Hello World\n";

    return 0;
 }

&#39; \ n&#39;的位置在我想要匹配的字符串中,可以是单个空格,多个空格或新行(因此我使用空格元字符的原因)。

返回的匹配数为零。我需要设置一个标志吗?

2 个答案:

答案 0 :(得分:0)

这应该有效

Poco::RegularExpression s ("\\s"); // White char
Poco::RegularExpression n ("\\n"); // New line
Poco::RegularExpression r ("\\r"); // Carrige return
Poco::RegularExpression t ("\\t"); // Tabulator

答案 1 :(得分:0)

问题在于你的正则表达式中的scape序列。

在这种情况下,您希望使用标记\将反斜杠(astring)添加到字符串\s中,但在C / C ++或Java中,必须将其写为double \\。因此,要解决您的问题,您必须添加另一个反斜杠:

Poco::RegularExpression regex("[A-Z]+\\s+[A-Z]+");

在这里你可以找到参考:

http://en.cppreference.com/w/cpp/language/escape