|
Webプログラミングでは、文字列のマッチングは頻繁に使用します。 それぞれの言語で書き方が違いますので、きちんと整理しておきましょう。 |
|
|
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"; } 「m//」の記述は、「m##」や「m{}」などいろんな書き方ができます。 「/」以外を使用する場合は、「m」を省略することができません。 たとえば「$str =~ m/^https?:\/\//」の部分は、次のようにいろいろな形式で記述することができます。 この場合「/」を「\」でエスケープする必要がないというメリットがあります。 (例)
|
|
|
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.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() : 部分一致 |
|
|
| ご意見箱コーナー (管理者宛てメール) |
|
このページは、あなたの参考になりましたか? |