這是我的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