質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Q&A

解決済

1回答

1998閲覧

Pythonで正規表現パターンを書きたい

itakuya

総合スコア7

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

0グッド

0クリップ

投稿2017/07/08 07:28

###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という開発環境を利用しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

パターンがちょっとだけ間違っているようです。
/*$
と書くと、「文字列の最後まで'/'が0個以上続く」という意味になってしまいます。

^(http:https)://.*$

のように「任意の文字を表す.」が0個以上続くというパターンにしてみてください。

投稿2017/07/08 08:12

KSwordOfHaste

総合スコア18392

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

itakuya

2017/07/08 11:56

ありがとうございます! 正規表現での*の取扱をワイルドカードと混同しておりました。 初歩的な穴にハマってしまいました。 重ねてありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問