爲僞正則表達式提供示例:根據PHP regexp語法匹配除example.com和example2.com以外的每個url。PHP正則表達式匹配除Example.com以外的任何URL
這裏是我到目前爲止,但它不工作:
$patternToMatch = "@https?://[^(example.com|example2.com)]\"*@i";
爲僞正則表達式提供示例:根據PHP regexp語法匹配除example.com和example2.com以外的每個url。PHP正則表達式匹配除Example.com以外的任何URL
這裏是我到目前爲止,但它不工作:
$patternToMatch = "@https?://[^(example.com|example2.com)]\"*@i";
這裏的問題是,一個類定義中([]
)特殊字符,如(
和|
失去了意義。
更好的解決方案是在example.com或example2.com上進行匹配,然後僅進行負面測試。
感謝Segfault,看起來我必須刪除所有example.com網址,然後搜索任何剩餘的網址,對嗎?再次感謝! – darkAsPitch 2010-03-01 20:47:05
不要使用正則表達式的東西你不需要。
$parts = parse_url($url);
if ($parts && $parts['host'] != 'example.com' && $parts['host'] != 'example2.com') {
// the URL seems OK
}
Lukas,我試圖從文本文檔中提取網址。我手邊沒有這些網址。我確實需要正則表達式。 – darkAsPitch 2010-03-01 20:40:08
不,方括號內的內容只會匹配一個字符。例如,正則表達式:
[^example]
將比e
,x
,a
,m
,p
,l
和e
匹配任何單個字符以外。
嘗試負lookahead:
@https?://(www\.)?(?!example2?.com)@i
你幾乎擁有了答案。 這將做你想要的匹配。
$patternToMatch = "@https?://(example.com|example2.com)@i";
感謝aberpaul,但看起來它只會找到example.com和example2.com - 我想要的一切,但example.com和example2.com – darkAsPitch 2010-03-02 00:26:36
我假設(也許錯了),你將能夠使用PHP?檢查匹配是否返回true/false。沿着這些線我可以看到段錯誤思想。 – aberpaul 2010-03-03 17:09:05
這功課嗎?如果是這樣,請標記爲。 – 2010-03-01 20:04:01
哈哈,沒有。這不是功課。我只是新的正則表達式。但感謝侮辱!如何回答? – darkAsPitch 2010-03-01 20:39:49
不是侮辱;只是質量控制。通常以這種方式表達的問題是 - 看看第一段看起來有點像作業的要求。這是所有:) – Matchu 2010-03-01 21:50:03