

python3で

[code]

    https://hoge1.hoge2
    
[/code]

のような文字列から

`https://`と`hoge2`を取り除き  
`hoge1`だけを取り出す方法を教えていただけませんか


CC BY-SA 3.0
2018-01-27T09:21:51.180
41242
2018-02-04T17:45:55.683
2018-01-27T15:33:53.713
19110
27170
question
python python3
正規表現でURL文字列の最初と最後を削除したい


「URLからサブドメインを取得する」が質問に対するゴールと解釈して答えます。

URLから何かしらの情報を得たいのであれば、まずは `urllib.parse` を利用しましょう（正規表現を使った解法は他の方に任せます）

[code]

    >>> from urllib.parse import urlparse
    >>> o = urlparse('https://hoge1.hoge2')
    >>> print(o.hostname.split('.')[0])
    'hoge'
    
[/code]

ちなみに、より正確にドメインとサブドメインを取得したい場合は tldextract というパッケージを利用する方法もあります。  
<https://pypi.python.org/pypi/tldextract>


CC BY-SA 3.0
2018-01-27T22:21:58.677
41251
2018-01-27T22:36:05.323
2018-01-27T22:36:05.323
2391
2391
41242
answer


正規表現を使うなら

[code]

    (?<=https:\/\/)\w+(?=\.\w+)
    
[/code]

このパターンでhoge1にマッチします。  
`(?<=)`はLookbehind, 後読み。このカッコ内パターンの後に来る場合のみマッチ。  
`(?=)`はLookahead, 先読み。このカッコ内のパターンの前に来る場合のみマッチ。  
なので`https:\/\/`（スラッシュはエスケープします）をLookbehindに、  
`\.\w+`（ドットをエスケープ\wはアルファベットです、この場合は.hoge2にマッチ）をLookaheadに指定し、  
その二つに挟まれた`\w`（アルファベット）を取り出します。


CC BY-SA 3.0
2018-02-04T17:45:55.683
41466
2018-02-04T17:45:55.683
23567
41242
answer