Webプログラミング研究所〜初心者・中級者Webプログラマ(CGI・Perl・PHP・Javaプログラム言語)のための支援サイト〜 「Webプログラミング研究所」TOPへ 「Webプログラミング研究所」TOPへ
 
「プログラミングサンプル集」TOPへ 「プログラミングサンプル集」TOPへ
 
目次をフレームで表示 目次をフレームで表示
 

文字列のマッチング

 
概要
Webプログラミングでは、文字列のマッチングは頻繁に使用します。
それぞれの言語で書き方が違いますので、きちんと整理しておきましょう。
 
Perl m//演算子を使用します。

サンプルソース
$str = "http://iwamode.net/index.html";

if($str =~ m/^https?:\/\//) {
  print "「http://」または「https://」から始まる文字列です。\n";
} else {
  print "「http://」または「https://」から始まる文字列ではありません。\n";
}

if($str =~ m/\.com/) {
  print "「.com」にマッチしました。\n";
} else {
  print "「.com」にマッチしませんでした。\n";
}

実行結果
「http://」または「https://」から始まる文字列です。
「.com」にマッチしました。

キーポイント
「m//」の表記は「//」というように「m」を省略して記述することができます。
上記サンプルソースは、次と全く同じです。

$str = "http://iwamode.net/index.html";

if($str =~ /^https?:\/\//) {
  print "「http://」または「https://」から始まる文字列です。\n";
} else {
  print "「http://」または「https://」から始まる文字列ではありません。\n";
}

if($str =~ /\.com/) {
  print "「.com」にマッチしました。\n";
} else {
  print "「.com」にマッチしませんでした。\n";
}

TIPS
「m//」の記述は、「m##」や「m{}」などいろんな書き方ができます。
「/」以外を使用する場合は、「m」を省略することができません。
たとえば「$str =~ m/^https?:\/\//」の部分は、次のようにいろいろな形式で記述することができます。
この場合「/」を「\」でエスケープする必要がないというメリットがあります。
(例)
$str =~ m#^https://# 両脇が「#」
$str =~ m|^https://| 両脇が「|」
$str =~ m(^https://) ()で囲む
$str =~ m{^https://} {}で囲む
 
PHP preg_match()関数を使用します。

サンプルソース
<?php
  $str = "http://iwamode.net/index.html";

  if(preg_match("/^https?:\/\//", $str)) {
    echo "「http://」または「https://」から始まる文字列です。\n";
  } else {
    echo "「http://」または「https://」から始まる文字列ではありません。\n";
  }

  if(preg_match("/\.com/", $str)) {
    echo "「.com」にマッチしました。\n";
  } else {
    echo "「.com」にマッチしませんでした。\n";
  }
?>

実行結果
「http://」または「https://」から始まる文字列です。
「.com」にマッチしました。
 
Java 「java.util.regex.Matcher」パッケージと「java.uti.regex.Pattern」パッケージのメソッドを使用します。

サンプルソース
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexMatch {
  public static void main(String[] args) {
    //マッチング対象の文字列です。
    sString str = "http://iwamode.net/index.html";

    Pattern p = Pattern.compile("^https?://");     //正規表現のコンパイル
    Matcher m = p.matcher(str); //正規表現エンジンの生成
    if(m.find()) { //java.util.regex.Matcher#find()メソッドは部分一致するかを判断します。
      System.out.println("「http://」または「https://」から始まる文字列です。");
    } else {
      System.out.println("「http://」または「https://」から始まる文字列ではありません。");
    }

    Pattern p2 = Pattern.compile("\\.com");
    Matcher m2 = p2.matcher(str);
    if(m2.find()) {
      System.out.println("「.com」にマッチしました。");
    } else {
      System.out.println("「.com」にマッチしませんでした。");
    }
  }
}

実行結果
「http://」または「https://」から始まる文字列です。
「.com」にマッチしました。

キーポイント
上記サンプルソースの 「m.find()」の部分を「m.matches()」に変更すると完全一致となるため、falseとなりますのでご注意ください。
java.util.regex.Matcher#matches() : 完全一致
java.util.regex.Matcher#find() : 部分一致
 
NOTE
 
ご意見箱コーナー (管理者宛てメール)
このページは、あなたの参考になりましたか?

参考になった  どちらともいえない  あまり参考にならなかった

ご意見・ご感想・ご要望がありましたら、ご記入いただければ幸いです。
今後のコンテンツ作成、ページ改善等の参考にさせていただきます。

 


Webプログラマになりたい人のためのスクール・講座情報

クリエイターの皆さん!お仕事ありますよ!フェローズに!

パソコンスクールガイド
積極的な情報収集が目標実現の近道です。

就職・起業・SOHO・それとも副業? デジハリがノウハウを伝授!

就転職に強い、資格取得スキルアップ専門校ヒューマンアカデミー

CsideNet レンタルサーバー サブドメイン型 780円/月
CGI/SSI/PHP、データベース(MySQL)が利用できます。1週間の試用期間があるのがGood!!

転職・派遣・就職・アルバイトの求人情報検索支援サイト 〜 14ALL JOB SEARCH 〜
 
 
  「Webプログラミング研究所」TOPへ 「Webプログラミング研究所」TOPへ
 
「プログラミングサンプル集」TOPへ 「プログラミングサンプル集」TOPへ
 
目次をフレームフレームで表示 目次をフレームで表示

Copyright (C) 2004 - 2005 IWAMODE Project All Rights Reserved.