Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Python】文字列内に含まれるURLを検出・チェックするプログラム

Pythonでは、標準ライブラリのreモジュール(正規表現モジュール)を使うことで、文字列の中にURLが含まれているかどうかを簡単にチェックできます。

この記事では、入力された文字列からURLを検出し、URLが存在する場合はそれを表示するプログラムを紹介します。URLの検出には、reモジュールが提供する findall() メソッドを使用します。

アルゴリズム

ステップ1:文字列を入力として受け取る。
ステップ2:findall()関数は、文字列内のパターンに一致する「重複しないすべてのマッチ」を返す。
この関数では文字列が左から右へ走査され、見つかった順序どおりにマッチ結果が返される。

サンプルコード

# 入力文字列からURLを検出するプログラム
import re

def url(str):
    # findall() を使用し、文字列内のURLに一致する条件を指定
    ur = re.findall('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\)]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', str)
    return ur

# ドライバーコード
str = 'https://auth.mywebsite.org / user / python program / https://www.mywebsite.org/'
print("Url is :: ", url(str))

実行結果

Url is :: ['https://auth.mywebsite.org / user / python program / https://www.mywebsite.org/']

正規表現パターンの解説

このプログラムで使われている正規表現パターンは、以下の要素で構成されています。

  • http[s]?:「http」または「https」で始まるURLに対応(s の後の ? により、s があってもなくてもマッチ)。
  • [a-zA-Z]|[0-9]:英字および数字にマッチ。
  • [$-_@.&+]:URLによく含まれる記号にマッチ。
  • [!*\(\)]:その他の記号やスペースにマッチ。
  • (?:%[0-9a-fA-F][0-9a-fA-F]):%エンコーディングされた文字(例:%20 など)にマッチ。

このように findall() メソッドと正規表現を組み合わせることで、長いテキストの中からURLだけを効率よく取り出すことができます。Webスクレイピングやログ解析など、テキスト処理のさまざまな場面で応用できるテクニックです。

  1. Pythonで文字列がパングラムかどうかを判定するプログラムの作成方法

    本記事では、与えられた文字列がパングラムであるかどうかを判定するPythonプログラムの解法とアプローチについて詳しく解説します。 問題の概要 文字列入力が与えられたとき、その文字列がパングラムであるかどうかを判定するPythonプログラムを作成します。 パングラムとは? パングラムとは、英語のアルファベット26文字すべてを少なくとも1回ずつ含む文章や一連の単語のことです。有名な例として「The quick brown fox jumps over the lazy dog」があります。 解法のアプローチ この問題は、以下の手順で解くことができます。 アルファベット全体を表す基準となる文字列

  2. 【Python】文字列がすべてユニークな文字で構成されているか判定する方法

    本記事では、与えられた文字列に含まれる文字がすべて一意(ユニーク)であるかどうかを判定するPythonプログラムについて、その解法とアプローチをわかりやすく解説します。 問題の概要 文字列が入力として与えられたとき、その文字列に含まれるすべての文字が重複なく一意であるかどうかを判定します。たとえば「abcde」はすべて異なる文字で構成されているためTrue、「tutorialspoint」のように同じ文字が複数回出現する場合はFalseとなります。 アプローチ この問題は、以下のような手順で効率的に解くことができます。 ブール値の配列を用意する: 各インデックス i が「アルファベット(AS