似乎无法使用正则表达式使用C ++

时间:2018-04-13 02:06:50

标签: c++ regex

我正在尝试用正则表达式解析一个URL,我在下面创建了正则表达式:

std::regex r("https?://[0-9a-zA-Z.]+(:([0-9]+))?.*", std::regex_constants::extended);

(我正试图从网址中删除端口)

我似乎无法匹配任何网址,但正则表达式适用于任何网址的几个在线正则表达式测试人员。作为测试,我创建了一些更简单的代码来检查,我无法匹配。

#include <regex>
#include <string>
#include <iostream>

int main() {
    std::string str = "http";
    std::smatch match;
    std::regex regex("https?");

    if(regex_match(str, match, regex)) {
        std::cout << "Match" << std::endl;
    }else { 
        std::cout << "No Match" << std::endl;
    }
    return 0;
}

编译并运行它会产生“No Match”,我不知道为什么。我最初用红宝石倾斜regexp,所以我可能会误解,但这似乎应该匹配。将正则表达式更改为“http”使其匹配,但我觉得“https?”应该匹配“http”,因为问号意味着在它之前可以有0或1个字符。

我真的很感激这里的一些帮助。我看了一堆关于c ++正则表达式的文档,我似乎无法想出这个。我不得不错过一些小细节。

任何帮助都会很棒。

由于

0 个答案:

没有答案