如何抓住以下字符串中的「加州」部分?Python最後一場比賽
http://states.com/_states/united_states/50/california
我在嘗試以下,但不知道如何匹配最後一個/。
match = re.search(r'\/(.*)$', state_url)
如何抓住以下字符串中的「加州」部分?Python最後一場比賽
http://states.com/_states/united_states/50/california
我在嘗試以下,但不知道如何匹配最後一個/。
match = re.search(r'\/(.*)$', state_url)
使用
r'[^/]*$'
它匹配任何數量的字符,除了'/'
輸入 或結束之前理想地,對於URL,
r'[^/#?]*(?:$|[#?])'
它匹配任何數量的字符那在輸入末尾($
)或路徑末尾的URL路徑部分中不是特殊的210。 (?:...)
只是一個不包含內容的括號組。
順便說一句,的RFC 3986附錄B是用於正則表達式解析的URI有很大的參考。
附錄B.解析與正則表達式
URI引用作爲「第一匹配贏」的算法是相同的由POSIX正則表達式中使用的「貪婪」 消歧的方法,它是 使用正則表達式解析URI引用的潛在五個組成部分是很自然和常見的。
以下行是正確表達式,用於將 格式良好的URI引用分解爲其組件。
^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))? 12 3 4 5 6 7 8 9
...
'r'\ /(。*?)$''將不起作用,原因很明顯。懶惰的量詞和一般的'''在這裏沒有地方。你的第一個正則表達式是有效的:http://regex101.com/r/cJ9fQ3(我會用'+'來代替'*') –
@琳德里安,是的。我從來不記得哪個正則表達式引擎會進行PEG風格的回溯,哪些引擎會跟懶惰的運算符進行Prolog式回溯。只是爲了不依賴懶惰和渴望之間的差異,並使相鄰的正則表達式運算符毫不含糊。 –
你確定你需要的正則表達式?以下情況如何?
In [66]: url = 'http://states.com/_states/united_states/50/california'
In [67]: url.split('/')[-1]
Out[67]: 'california'
但這取決於您是否總是想要提取URL中的最後一個單詞,當然。我只是想提到它。
@ IgnacioVazquez-Abrams:我確定他有。這是行不通的。 –
您似乎在解析URI,爲什麼不使用此URI的路徑部分並獲取路徑的最後一個組件? – fge