正規表現の利用方法
来源:互联网 发布:微信钱包表结构 mysql 编辑:程序博客网 时间:2024/04/19 07:25
まず正規表現をどのような時に使用するのかを簡単に確認しておきます。
ある文字列が他の文字列と一致するかどうか調べるには、Stringクラスで定義されているequalsメソッドを使います。
equalspublic boolean equals(Object anObject)
この文字列と指定されたオブジェクトを比較します。引数が null でなく、このオブジェクトと同じ文字シーケンスを表す String オブジェクトである場合にだけ、結果は true になります。パラメータ: anObject - この String と比較されるオブジェクト 戻り値: 指定されたオブジェクトがこの文字列に等しい String を表す場合は true、そうでない場合は false
例えば次のように使います。
String str = "Hello";if (str.equals("Hello")){ System.out.println("文字列はHelloです");}else{ System.out.println("文字列はHelloとは違います");}
このサンプルでは変数に格納された文字列と"Hello"を比較し、完全に一致するかどうかを調べます。今回の場合は一致しますので「文字列はHelloです」と出力されることになります。
このように完全に一致しているかどうかを調べるだけならばequalsメソッドを使うことで判定が出来ます。
では次に対象の文字列に"e"で始まり"o"で終わる文字列が含まれているかどうかを調べるにはどうすればいいでしょうか。このような条件を満たす文字列は数限りなく存在します。例えば次のような文字列です。
eoeaopoeboneabogonabbdddeeeboHello
強引に調べるのであれば文字列の中に"e"と"o"が含まれているのを確認し"e"の方が先に記述されているかどうかを調べるといった方法でも可能です。ただもっと複雑な条件になった場合には大変ですし、条件毎に調べるアルゴリズムを考え、検証しなければなりません。
このような時、正規表現を使用することで簡潔に調べることができます。正規表現では調べたい条件をパターンと呼びますが、先ほどの"e"で始まり"o"で終わるパターンは次のように表すことが出来ます。
"e.*o"
このパターンは「"e"で始まり任意の文字が0回以上繰り返された後で"o"が出現する」というパターンとなります。パターンを定義したら今度は対象の文字列にパターンに一致する文字列があるかどうかを調べます。正規表現では対象の文字列がパターンに一致した文字列を含んでいた場合、「パターンにマッチした」と言います。
詳しい記述方法は次のページ以降で確認していきますが、次のように記述します。
String str = "poebon";String regex = "e.*o";Pattern p = Pattern.compile(regex);Matcher m = p.matcher(str);if (m.find()){ System.out.println("マッチしました");}else{ System.out.println("マッチしません");}
正規表現を使えば条件式をパターンとして表しさえすれば後は同じ手順でマッチするかどうか確認できます。またパターンを簡単に作成できるように便利な構文が多く用意されています。
では次のページ以降で正規表現の実際の使い方を確認していきます。
サンプルプログラム
では実際に試してみます。
JSample1_1.java
import java.util.regex.Pattern;import java.util.regex.Matcher;class JSample1_1{ public static void main(String args[]){ String str1 = "Hello"; String str2 = "Hey"; String regex = "e.*o"; Pattern p = Pattern.compile(regex); Matcher m1 = p.matcher(str1); System.out.print(str1 + " は"); if (m1.find()){ System.out.println("マッチします"); }else{ System.out.println("マッチしません"); } Matcher m2 = p.matcher(str2); System.out.print(str2 + " は"); if (m2.find()){ System.out.println("マッチします"); }else{ System.out.println("マッチしません"); } }}
ではコンパイルを行った上で実行してみます。
なお今後作成するサンプルは全て文字コードをUTF-8で保存してあります。
- 正規表現の利用方法
- 利用反射调用方法
- 利用反射调用方法
- 利用反射解析方法
- sql injection终极利用方法
- sql injection终极利用方法
- sql injection终极利用方法
- 利用反射实现工厂方法
- sql injection 终极利用方法
- sql injection终极利用方法
- 利用蒙特卡罗方法求积分
- ms10-070详细利用方法
- 利用反射测试私有方法
- 利用Ostermiller生成CSV方法
- 利用javap生成方法签名
- 利用初始化方法创建对象
- 利用IntentService服务执行方法
- 利用Service服务执行方法
- 为什么会出现子站点的CrawlDatum中的ifStart和finished字段与父站点相同?
- PE文件格式
- HDOJ 4081
- HDU 1211 RSA 逆元 快速模取幂
- 高通Android智能平台开发总结
- 正規表現の利用方法
- Oracle BAM的Drill Down实现
- Android Building System 分析(转)
- 百思买裁员2400人 电器零售巨头未来依旧迷茫
- linux命令行+SHELL编程学习(1)
- Android编译过程详解(一)
- Android编译过程详解(二)
- JNI_Onload的实现
- 【Android】状态栏通知Notification、NotificationManager详解