次の文字列の「カリフォルニア」の部分を取得するにはどうすればよいですか?
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'[^/#?]*(?:$|[#?])'
$
これは、input( ) の最後まで、またはパス部分の最後まで、URL パス部分の特殊ではない任意の数の文字に一致します[#?]
。は(?:...)
、内容をキャプチャしないかっこで囲まれたグループです。
ところで、 RFC 3986の付録 B は、正規表現を使用して URI を解析するための優れたリファレンスです。
付録 B. 正規表現による URI 参照の解析
「first-match-wins」アルゴリズムは、POSIX 正規表現で使用される「貪欲な」曖昧さ回避方法と同じであるため、URI 参照の潜在的な 5 つのコンポーネントを解析するために正規表現を使用することは自然で一般的です。
次の行は、整形式の URI 参照をそのコンポーネントに分解するための正規表現です。
^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))? 12 3 4 5 6 7 8 9
...