这是我的 javascript 正则表达式模式:
url = "http://www.amazon.com/gp";
hostname = /^((\\w+):\\/\\/\\/?)?((\\w+):?(\\w+)?@)?([^\\/\\?:]+):?(\\d+)?(\\/?[^\\?#;\\|]+)?([;\\|])?([^\\?#]+)?\\??([^#]+)?#?(\\w*)/.exec(url) || [];
// would return "www.amazon.com"
- 上面的正则表达式从给定的 url 中提取主机名。我需要这条线使用 pcre (c++) 工作。如您所见,我已经在每个“\”中添加了另一个“\”,但它仍然不起作用。
我需要做哪些额外的更改才能使其在 pcre 代码而不是 javascript 中工作?或者也许这是不可能的,我需要构建全新的模式以使其在 pcre 中工作?
这是我的代码的简单版本:
int main(void)
{
string text = "http://www.amazon.com";
string hostname;
pcrecpp::RE re("^((\\w+):\\/\\/\\/?)?((\\w+):?(\\w+)?@)?([^\\/\\?:]+):?(\\d+)?(\\/?[^\\?#;\\|]+)?([;\\|])?([^\\?#]+)?\\??([^#]+)?#?(\\w*)");
if(re.PartialMatch(text, &hostname))
{
std::cout << "match: " << hostname << "\n";
}else{
std::cout << "no match. \n";
}
return 0;
}
谢谢。