###Pythonで正規表現パターンを書きたい
PythonでURLの開始位置がhttpまたはhttpsであるかを確認する正規表現を書いています。
その中で、以下の正規表現で試したところ意図した動作をしなかったので質問させて頂きます。
pattern = '^(http|https)://*$'
上記のパターンでは比較する文字列がhttpまたはhttpsで始まる文字列であることを想定しています。
しかし、http://www.yahoo.co.jpやhttps://www.google.comなどのいずれのテストケースにおいてもうまくマッチせずに例外処理へと進んでしまいます。
また、以下のパターンでは意図した動作を確認しています。
pattern = '^(http|https)://*$'
違いがいまいち理解できません。
どのような違いがあるのでしょうか?
###該当のソースコード
Python
1import requests,re 2 3def inputUrl(): 4 iurl = input("接続先URL:") 5 pattern = '^(http|https)://*$' 6 try: 7 res = re.match(pattern,iurl) 8 if res is None: 9 raise ValueError 10 except ValueError: 11 iurl = "http://www.yahoo.co.jp" 12 13 return iurl 14 15def connectUrl(url): 16 try: 17 print (url + "への接続") 18 r = requests.get(url) 19 except: 20 print ("http://www.yahoo.co.jpへの接続") 21 r = requests.get('http://www.yahoo.co.jp') 22 return r 23 24def decision(req): 25 scode = req.status_code 26 if scode == 200: 27 print ('Connected!') 28 else: 29 print ('Disconnected!') 30 31if __name__ == '__main__': 32 print ("///接続確認(Web)///") 33 url = inputUrl() 34 r = connectUrl(url) 35 decision(r) 36
###補足情報(言語/FW/ツール等のバージョンなど)
Pythonのバージョンは3.6です。
Spyderという開発環境を利用しています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/08 11:56