2016-10-25 27 views
2

我正在嘗試使用正則表達式匹配實現語法高亮顯示,對於使用//表示的單行註釋。但是,在我們存儲URL的代碼中存在一些地方(以http://https://開頭)作爲字符串,顯然,這些不應被標識爲註釋。我如何構建正則表達式字符串以正確匹配兩種情況?匹配雙斜槓但不是http://或https://

目前,我使用匹配//,同時還錯誤地處理URL中的正則表達式,是這樣的:

[\/][\/]+.*

我最親密的嘗試,試圖排除的網址是:

[^:][\/][\/]+.*

但是這並不完美,因爲它需要在//之前有一些字符。可能出現這樣的情況,即兩個斜線是線上的前兩個字符,並且在這種情況下它不起作用。使[^:]可選也不起作用,因爲它修復了上述情況,但之後http://https://再次被錯誤地匹配。

+0

嘗試'(<? !?(?<!https:)\/\ /.*' –

回答

3

可以使用負回顧後有這樣的正則表達式:

(?<!http:)\/\/ 

你可以有這樣的事情了兩種協議

(?<!http:|https:)\/\/ 

Working demo

+0

'(?<!:)\/\ /'將其蒸餾至基本答案可將搜索時間縮短几乎50%如果。 – TemporalWolf