[英]How to find the frequency of IP addresses that belong to the same subnet using regex?
[英]Regex to find web addresses in short copy
擁有簡短副本,我需要匹配所有出現的網站鏈接。 為了簡單起見,需要找出這種格式的地址:
www.aaaaaa.bbbbbb
http://aaaaaa.bbbb
https://aa.bbbb
但我還需要照顧更長的www / http / https版本:
www.aaaaa.bbbb.ccc.ddd.eeee
等等,因此基本上不知道子域的數量。 現在我想出了這個正則表達式:
(www\.([a-zA-Z0-9-_]|\.(?!\s))+)[\s|,|$]|(http(s)?:\/\/(?!\.)([a-zA-Z0-9-_]|\.(?!\s))+)[\s|,|$]
如果您測試:
this is some tex with www.somewIebsite.dfd.jhh.hjh inside of it or maybe http://www.ssss.com or maybe https://evenore.com hahaah blah
它的工作原理很好,但地址末尾的時間除外。 $
似乎僅在末尾有\\ n時才起作用,並且失敗:
this is some tex with www.somewIebsite.dfd.jhh.hjh
我猜想修復很簡單,我想念一些明顯的東西,那么我該如何解決呢? 順便說一句,如果你想快速玩轉https://regex101.com/r/eL1bI4/3,我在這里發布了正則表達式
問題是您將結束錨$
放置在字符組[]
[\s|,|$]
然后,將其按字面意義解釋為美元符號,而不作為錨點(管道字符|
也按字面意義進行解釋,在那里不需要)。 解決方案是將$
錨點移到外部:
(?:[\s,]|$)
但是,在這種情況下,使用正向先行而不是非捕獲組更有意義(您不希望尾隨空格或逗號):
(?=[\s,]|$)
結果,您將得到以下正則表達式模式:
(www\.([a-zA-Z0-9-_]|\.(?!\s))+)(?=[\s,]|$)|(http(s)?:\/\/(?!\.)([a-zA-Z0-9-_]|\.(?!\s))+)(?=[\s,]|$)
請參閱工作演示 。
處理尾隨句號的更新版本:
(www\.([a-zA-Z0-9-_]|\.(?!\s|\.|$))+)(?=[\s,.]|$)|(http(s)?:\/\/(?!\.)([a-zA-Z0-9-_]|\.(?!\s|\.|$))+)(?=[\s,.]|$)
請參閱工作演示 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.