JavaA2Z

KAB-studio > プログラミング > JavaA2Z > 正規表現とは

正規表現

日本語 文字列の規則
英語 regular expression
ふりがな せいきひょうげん
フリガナ セイキヒョウゲン

解説

ある文字列の「並び方の規則」を表した文字列のこと。
 
たとえば「あああ」は「『あ』が3つ並んだ文字列」、もしくは「『あ』が1つ以上並んだ文字列」と表現できる。
このような、特定の文字列が持つ規則・ルールを表現したものが「正規表現」である。
 
正規表現を用いることで、文字列が含む「特定の規則に則った箇所」を見つけ出すことができ、それを元に検索置換うことができる。この検索置換こそが正規表現を使用する目的である。
正規表現は特別な構文で記述する必要があり、その構文は「正規表現を処理するエンジン」によって異なるため、一概に「正規表現」と言っても、使用するエンジンによって実際の正規表現文字列は異なることになる。
 
J2SEにはPatternクラス及びMatcherクラスという正規表現をクラスがあり、これらのクラスを使用することで正規表現を用いた検索置換える。
また、Stringクラスにも、正規表現検索うためのmatches()メソッドや、正規表現置換うreplaceAll()メソッドが存在する。StringクラスのreplaceAll()メソッドの使用方法については「置換」の項目を参照のこと。
 
置換」と並び、連呼すると少し恥ずかしい言葉のひとつ。

(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class Sample
{
    public static void main( String[] args )
    {
        // サンプルの文字列。
        String sample = "あああいいいいいううういおお";

        // 「い」が続く文字列を検索します。
        String regex = "い+";

        // 正規表現クラスPatternとMatcherを使用して検索します。
        Matcher matcher = Pattern.compile( regex ).matcher( sample );

        // 分割して出力してみます。
        int end = 0;
        while( matcher.find() )
        {
            // まずヒットした箇所より前を出力します。
            System.out.println( sample.substring( end, matcher.start() ) );
            // 次にヒットした箇所を出力します。
            System.out.println( "Hit>" + sample.substring( matcher.start(), matcher.end() ) );
            // ヒットの範囲の最後を取っておきます。
            end = matcher.end();
        }
        // 最後に終わりの部分を出力します。
        System.out.println( sample.substring( end, sample.length() ) );
        // あああ
        // Hit>いいいいい
        // ううう
        // Hit>い
        // おお

        // ちなみに、置換はString#replaceAll()を使うと簡単にできます。
        // この使用例は「置換」の項目を参照してください。
    }
}
// Sample.java
import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class Sample
{
    public static void main( String[] args )
    {
        // サンプルの文字列。
        String sample = "あああいいいいいううういおお";

        // 「い」が続く文字列を検索します。
        String regex = "い+";

        // 正規表現クラスPatternとMatcherを使用して検索します。
        Matcher matcher = Pattern.compile( regex ).matcher( sample );

        // 分割して出力してみます。
        int end = 0;
        while( matcher.find() )
        {
            // まずヒットした箇所より前を出力します。
            System.out.println( sample.substring( end, matcher.start() ) );
            // 次にヒットした箇所を出力します。
            System.out.println( "Hit>" + sample.substring( matcher.start(), matcher.end() ) );
            // ヒットの範囲の最後を取っておきます。
            end = matcher.end();
        }
        // 最後に終わりの部分を出力します。
        System.out.println( sample.substring( end, sample.length() ) );
        // あああ
        // Hit>いいいいい
        // ううう
        // Hit>い
        // おお

        // ちなみに、置換はString#replaceAll()を使うと簡単にできます。
        // この使用例は「置換」の項目を参照してください。
    }
}

この単語を含むページ

「みだし」に含まれているページ

「解説」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/10/20
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。