如何識別文本中的.onion鏈接,記住它們可以以各種方式進入;用於識別文本中的.onion鏈接的方法?
hfajlhfjkdsflkdsja.onion
http://hfajlhfjkdsflkdsja.onion
http://www.hfajlhfjkdsflkdsja.onion
我想正則表達式,但(.*?.onion)
將返回全款,其中URL鏈接被埋葬在
如何識別文本中的.onion鏈接,記住它們可以以各種方式進入;用於識別文本中的.onion鏈接的方法?
hfajlhfjkdsflkdsja.onion
http://hfajlhfjkdsflkdsja.onion
http://www.hfajlhfjkdsflkdsja.onion
我想正則表達式,但(.*?.onion)
將返回全款,其中URL鏈接被埋葬在
這將做到這一點:(?:https?://)?(?:www)?(\S*?\.onion)\b
(由非捕獲組 - 信用:@WiktorStribiżew)
演示:
s = '''hfajlhfjkdsflkdsja.onion
https://hfajlhfjkdsflkdsja.onion
http://www.hfajlhfjkdsflkdsja.onion
https://www.google.com
https://stackoverflow.com'''
for m in re.finditer(r'(?:https?://)?(?:www)?(\S*?\.onion)\b', s, re.M | re.IGNORECASE):
print(m.group(0))
輸出
hfajlhfjkdsflkdsja.onion
https://hfajlhfjkdsflkdsja.onion
http://www.hfajlhfjkdsflkdsja.onion
您可以使用'\ S'而不是'[^ \ s]'。 在開始時還使用'?'在這種情況下是無用的,並使正則表達式更復雜。 '(http(s)?://)?(www)?([^ \ s] *?\。洋蔥)'等於'\ S *?\。洋蔥' – Szymon
@Szymon這將防止錯誤積極的像'大聲笑... imAn.onion'。 –
不過,我同意,'\ S'比'^ \ s'更簡潔。 –
的方法沒有正則表達式:
url = 'http://hfajlhfjkdsflkdsja.onion'
split = url.split('.onion')
if len(split)==2 && len(split[1])==0:
%do something
如何處理「這是一個鏈接:blahblah.onion」?它會分成「這是一個鏈接:blahblah」。 –
它會將它分成['這是一個鏈接:blahblak',''],然後你輸入if結構。 – SeaMonkey
儘管OP想要「blahblah」部分。不是其餘的。 –
方便快捷:
([^\s]+\.onion)
比賽從第一空間,直到 「.onion」 開始的所有字符。
1.無需將整個正則表達式放在'()'中,因爲它是已經是一個組(0)。 2.而不是'[^ \ s]'使用\ S。它會匹配'www.onion.com'上的'www.onion' – Szymon
嘗試'\ S + \。洋蔥\ b'。但是,如果鏈接包含空格,這將無濟於事。 –
你必須找到永遠在鏈接之前的東西,永遠不會出現在鏈接中。像@WiktorStribiżew建議的那樣,你可以使用空白字符。 – Szymon
嗨@WiktorStribiżew我在這裏嘗試了這個正則表達式https://regex101.com/r/5ArhNJ/2它似乎並沒有捕獲它 – user3191569