0

如何获取以下字符串中的“california”部分?

http://states.com/_states/united_states/50/california

我正在尝试以下但不知道如何匹配最后一个 /。

match = re.search(r'\/(.*)$', state_url)
4

2 回答 2

5

你确定你需要正则表达式吗?下面的呢?

In [66]: url = 'http://states.com/_states/united_states/50/california'

In [67]: url.split('/')[-1]
Out[67]: 'california'

但这当然取决于您是否总是想提取 URL 中的最后一个单词。我只是想提一下。

于 2012-12-25T21:32:44.777 回答
3

采用

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

...

于 2012-12-25T21:25:55.383 回答