任何想法爲什麼這個正則表達式不工作?如何使用正則表達式排除YouTube鏈接?
'#((http://|www.)(.*^(youtube)\.(com|org|co.il|net|us|ws|info|tv|me|tk|co.uk).*))#'
我想找到不屬於YouTube的鏈接。
任何想法爲什麼這個正則表達式不工作?如何使用正則表達式排除YouTube鏈接?
'#((http://|www.)(.*^(youtube)\.(com|org|co.il|net|us|ws|info|tv|me|tk|co.uk).*))#'
我想找到不屬於YouTube的鏈接。
你有這個段在您正則表達式:^(youtube)
請理解這不會否定串youtube
。
您需要負超前或回顧後否定匹配這樣的文字:
(?!youtube)
OR
(?<!youtube)
爲了您的正則表達式,可以這樣:
#((http://|www.)((?!youtube)[^.]+\.(com|org|co.il|net|us|ws|info|tv|me|tk|co.uk).*))#
但是你需要在你的問題中提供你的輸入字符串的樣本。
那麼我該怎麼做呢..... – user2275812
謝謝!作品! (?<!youtube) – user2275812
如果這個答案對你有用,那麼你可以通過點擊這個答案旁邊的勾號將它標記爲已接受? – anubhava
我會走向相反的方向
$youtubePattern = '%(https?:\/\/(www\.)?youtube\.([a-z]{2,3}).*)%six';
if (!preg_match($youtubePattern, $subject)) {
// not youtube, do whatever...
}
爲什麼不[解析URL](http://php.net/manual/en /function.parse-url.php)並從「PHP_URL_HOST」中檢查[二級域名](http://en.wikipedia.org/wiki/Second-level_domain)?我建議不要爲自己創建[2個問題](http://www.codinghorror.com/blog/2008/06/regular-expressions-now-you-have-two-problems.html)。 – Joe