如何获取以下字符串中的“california”部分?
http://states.com/_states/united_states/50/california
我正在尝试以下但不知道如何匹配最后一个 /。
match = re.search(r'\/(.*)$', state_url)
你确定你需要正则表达式吗?下面的呢?
In [66]: url = 'http://states.com/_states/united_states/50/california'
In [67]: url.split('/')[-1]
Out[67]: 'california'
但这当然取决于您是否总是想提取 URL 中的最后一个单词。我只是想提一下。
采用
r'[^/]*$'
它匹配任意数量的字符,除了'/'
输入结束之前,或者理想情况下,对于 URL,
r'[^/#?]*(?:$|[#?])'
它匹配 URL 路径部分中任意数量的非特殊字符,直到 input ( $
) 的末尾或路径部分的末尾[#?]
。这(?:...)
只是一个不捕获内容的括号组。
顺便说一句, RFC 3986的附录 B是使用正则表达式解析 URI 的一个很好的参考。
附录 B. 使用正则表达式解析 URI 引用
由于“first-match-wins”算法与 POSIX 正则表达式使用的“贪婪”消歧方法相同,因此使用正则表达式来解析 URI 引用的潜在五个组成部分是很自然且司空见惯的。
以下行是将格式良好的 URI 引用分解为其组件的正则表达式。
^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))? 12 3 4 5 6 7 8 9
...