正規表現

トップ > チップス > 正規表現
2012-02-13, reqex

/tips/java/reqex **Mathcerの使用例1 「()」で括った部分をグループとして、マッチした部分を個別に抽出することができます。

:// パターンをコンパイル :Pattern p = Pattern.compile("([a-z]+),([0-9]+),(true|false)"); :// 引数に指定した文字列にマッチ :Matcher m = p.matcher("abc,123,true"); :// 結果を取得 :boolean f = m.find(); :int gc = m.groupCount(); :System.out.println("find="+f); :System.out.println("groupCount="+gc); :System.out.println("group[0]="+m.group(0)); :System.out.println("group[1]="+m.group(1)); :System.out.println("group[2]="+m.group(2)); :System.out.println("group[3]="+m.group(3));

以下、実行結果です。 :find=true :groupCount=3 :group[0]=abc,123,true :group[1]=abc :group[2]=123 :group[3]=true

**肯定先読みの不具合? jdk1.6.0_04で以下のコードを実行すると「false」を返します。Rubyで同じようなパターンマッチングをすると「true」になります。どちらが正しいのでしょうか? :System.out.println("foobar".matches("foo(?=bar)")); // false

**キーワードをマークアップする 正規表現グループによって、置換後の文字列に(元の文字列の)マッチした部分を使用することができます。下記例では、マッチした部分を「..」で囲みます。 :String marked = "foobar".replaceAll("([abr]+)", "$0"); // foobar

この記事は役に立ちましたか?