簡體   English   中英

用於在斜杠上拆分的正則表達式

[英]Regular Expression for splitting on slash

我試圖拆分URL以獲取域名。

example.com                => example.com
example.com/dir/index.html => example.com

我試圖給我們的正則表達式是

(.+?)(/|$)

當我在python中使用它時,如下所示:

import re
m = re.search('(.+?)(/|$)', url)

它適用於第一個,但對於第二個例子,我總是得到example.com/ 我如何擺脫反斜杠?

編輯:我很抱歉,我忘了提供一個重要信息。 我需要一個正則表達式,因為我需要在Oracle SQL中編寫它。 幸運的是,Oracle支持正則表達式,但沒有像urlparse 我只是使用python進行測試。 對於那個很抱歉!

這樣做的簡單方法是在stdlib中使用urlparse函數:

>>> from urllib.parse import urlparse
>>> url = 'http://example.com/dir/index.html'
>>> p = urlparse(url)
>>> p.netloc
'example.com'

除了簡單得多之外,它還處理你沒有想到的明確定義和明確記錄的案例(例如,如果有端口和主機?),而對於你的代碼,誰知道你沒有預料到的任何情況會發生什么?


如果您確實希望將URL視為字符串而不是URL,則在斜杠上拆分的簡單方法是在斜杠上拆分:

>>> bits = url.split('/')
>>> bits[2]
example.com

如果你真的想使用正則re.split來分割斜杠,你可以使用re.split而不是試圖找出一種方法來欺騙re.search為你分裂:

>>> bits = re.split('/', url)
>>> bits[2]
example.com

最后,如果你想用matchsearch來做,並且你不想捕獲/ ,不要把/放在一個捕獲組中,並查看你想要捕獲的組,而不是在整個字符串:

>>> url = 'example.com/dir/index.html'
>>> m = re.search('(.+?)(/|$)', url)
>>> m.groups()
('example.com', '/')
>>> m = re.search('(.+?)(?:/|$)', url)
>>> m.groups()
('example.com',)

嘗試匹配非froward斜杠,如([^/]+?)(/|$)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM