这是我的JavaScript正则表达式模式:转换从Javascript正则表达式模式PCRE(perl的)
url = "http://www.amazon.com/gp";
hostname = /^((\\w+):\\/\\/\\/?)?((\\w+):?(\\w+)[email protected])?([^\\/\\?:]+):?(\\d+)?(\\/?[^\\?#;\\|]+)?([;\\|])?([^\\?#]+)?\\??([^#]+)?#?(\\w*)/.exec(url) || [];
// would return "www.amazon.com"
- 上述正则表达式提取从指定网址的主机名。 我需要这条线来使用pcre(C++)。你可以看到,我已经为每个'\'添加了另一个'\',但它仍然不起作用。
我需要做些什么才能使其工作在pcre代码而不是javascript?或者也许这是不可能的,我需要建立全新的模式,使其工作在pcre?
这是我的一个简单的代码版本:
int main(void)
{
string text = "http://www.amazon.com";
string hostname;
pcrecpp::RE re("^((\\w+):\\/\\/\\/?)?((\\w+):?(\\w+)[email protected])?([^\\/\\?:]+):?(\\d+)?(\\/?[^\\?#;\\|]+)?([;\\|])?([^\\?#]+)?\\??([^#]+)?#?(\\w*)");
if(re.PartialMatch(text, &hostname))
{
std::cout << "match: " << hostname << "\n";
}else{
std::cout << "no match. \n";
}
return 0;
}
感谢。
我应该怎么做了“/分隔符”? – shaimagz
@BillyONeal:这是不正确的,在PCRE的C++版本中,你不需要分隔符。另外,您通常不必使用/作为分隔符,大多数其他分隔符也可以使用。 – Wolph