RのWeb制作

Webサービス制作のための技術情報を。データ分析(Python、機械学習コンペ他)や自作野球ゲームMeisyoのこと中心。

Web制作 SQL

[SQL]URLから正規表現でホストの抽出

投稿日:2019年3月5日 更新日:

他のサイトの説明が釈然としなかったので投稿。

以下のref0~2番のホストを抽出したいとする。

ref[0] = "http://www.other.com/path1/index.php?k1=v1&k2=v2#Ref1"
ref[1] = "http://www.other.net/path1/index.php?k1=v1&k2=v2#Ref1"
ref[2] = "https://www.other.com/"

*ホスト名 0 = www.other.com

SQLでは以下の通り。

substring(ref from 'https?://([^/]*)')

出力は[0] = www.other.com

関数:
 substring(抽出文字列, 開始桁, 切り取り文字数)

正規表現:
(1)https?
「?」の使い方:「X?」=Xを0or1文字
httpの後に「sを1文字」または「何もつけない」という意味。
[http|https]と同義。
基本SSL準拠でないと警告が出る仕組みになったので、今後はhttpsが増えてくると思います。

(2)([^/]*)
分解して考えると、[^/]に*が付いて、その外側に()。
手順1. [^/]は「^ = ではない」「/」を[](1文字)なので、
「/」ではない「1文字」と読み替える。
手順2. *は直前の文字の0回以上の繰り返し(最長一致)なので、
「/」ではない文字が出てくるまでの文字列が出力される。
手順3. そこに() = フォーカスする。
ということで、0ではwww.other.comが出力される。

手順3をなしにしてみると・・・

substring(ref from 'https?://[^/]*')

[0] = http://www.other.com が出力される。

さらに、変な位置に()をつけると、

substring(ref from 'https?://([^/])*')

「/ではないの文字列の最後の一文字」を出力できる。
つまり、0の場合comの最後のmだ。意味があるのかは置いといて。

[^/]を[^.]に変えると、

substring(ref from 'https?://([^.]*)')

最初の「.」までのwwwが出力される。

とまあ、こんな感じで分解して考えるといいだろう。

-Web制作, SQL

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

[Meisyo] アップデート予定のお知らせ

名将と呼ばれた者達、今回のアップデートではバランス調整をメインに行います。 まずは謝辞として、Meisyo アンケート 2020/02にお答えいただき誠にありがとうございました。また、ゲーム内でバグな …

[Meisyo]ビッグデータから学ぶ試合の基礎設計2

名将と呼ばれた者達、めちゃくちゃソースコードが長い(この記事) ここでは、「どのパラメータが打率等にどれくらい関係するのか」を理解することで強いチームを作る指針を記載しておきます。 というわけで27- …

no image

PHPでPC・スマホ・タブレット・携帯を判別するおすすめの方法

今まさにスマートフォン時代になってきています。 PHPでPCやスマートフォン、タブレット、携帯を判別してみましょう。 ※この内容は2013年当時の方法です。 普通の判別法 $_SERVER[ …

[Python] ディープラーニングのモデル「VGG16」を使って画像認識をし、判断した理由の可視化をする。

今日はデータ分析から趣向を変えて画像認識を行います。 やることは簡単。 1.撮った写真を使って画像認識させ、何が写っているか判断させる。 2.何が写っているかを判断した理由(位置)を可視化する。 以上 …

[Meisyo]投手交代アルゴリズムの変更

要望 投手起用と代打について現状自分は投手起用をこんな感じにしていて 代打は6回以降にしたいのですが投手の数の関係で9回以降に代打を起用された場合に野手が登板することになり困っています。代打起用を何回 …