正規表現チュートリアルの一致単一文字の詳細

3427 ワード

この例では、正規表現チュートリアルの一致する単一文字について説明します.皆さんの参考にしてください.具体的には以下の通りです.
注意:すべての例で正規表現の一致結果がソーステキストの「と」に含まれている場合、Javaを使用して実装される例もあります.java自体の正規表現の使用法であれば、対応する場所で説明されます.すべてのjava例はJDK 1.6.0_13回のテストに合格しました.
JAvaテストコード:

/**
 *                ,      
 * @param regex      
 * @param sourceText        
 */
public static void matchAndPrint(String regex, String sourceText){
  Pattern pattern = Pattern.compile(regex);
  Matcher matcher = pattern.matcher(sourceText);
  while(matcher.find()){
    System.out.println(matcher.group());
  }
}


一、純テキストに一致する
1、一致する結果が1つしかない
まず、単純な正規表現を見てみましょう.today、それ自体は純粋なテキストですが、正規表現です.例を見てみましょう
ソース:Yesterday is history,tomorrow is a mystery,but today is a gift.
正規表現:today
結果:Yesterday is history,tomorrow is a mystery,but【today】is a gift.
解析:ここで使用する正規表現は、ソーステキストのtodayに一致する純粋なテキストです.
matchAndPrintメソッドを呼び出し、出力結果は次のとおりです.
today
2、複数の照合結果がある
ソース:Yesterday is history,tomorrow is a mystery,but today is a gift.
正規表現:is
結果:Yesterday is history,tomorrow is a mystery,but【today】is a gift.
解析:ソーステキストには3つのisがありますが、historyのisも一致するため、4つのisが出力されます.
matchAndPrintメソッドを呼び出し、出力結果は次のとおりです.
is
is
is
is
3、アルファベットの大文字と小文字の問題
正規表現はアルファベットの大文字と小文字を区別しますが、多くの正規表現の実装では大文字と小文字を区別しないマッチング操作もサポートされています.JavaScriptでは、iフラグを使用して、大文字と小文字を区別しないマッチングを実行します.Javaで、大文字と小文字を区別しない場合は、正規表現をコンパイルするときに次のように指定できます.

Patternpattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);


二、任意の文字に一致する
前に見た正規表現はすべて静的な純粋なテキストであり、正規表現の威力をまったく体現していない.次に、予知できない文字に一致するために正規表現を使用する方法を見てみましょう.
正規表現では、検索するものを与えるために特殊な文字(または文字の集合)が使用されます.文字(英語ステータスピリオド)は、任意の1文字に一致します.DOSに相当する?文字とSQLの_(下線)文字.例えば、正規表現c.tはcat、cut、cotなどと一致する.例を見てみましょう.
テキスト:
orders1.txt
orders2.txt
sales1.txt
salesA.txt
orders3.txt
sales2.txt
sales.txt
正規表現:sales.
結果:
orders1.txt
orders2.txt
【sales1】.txt
【salesA】.txt
orders3.txt
【sales2】.txt
【sales.】txt
解析:正規表現sales.は文字列salesと別の文字条からなるファイル名を探し出し、結果からアルファベット、数字、それ自体を一致させることができる.7つのファイルのうち4つがこのモードに一致します.
matchAndPrintメソッドを呼び出すと、出力結果は次のとおりです.
sales1
salesA
sales2
sales.
三、特殊文字のマッチング
.文字は正規表現で特別な意味を持つ.モードに1つ必要な場合は、正規表現に必要なのは.正規表現の特殊な意味ではなく文字そのものであることを方法で伝えます.そのためには、.の前に文字を付けてエスケープする必要があります.メタ文字(metacharacter)でもあり、文字の意味そのものではなく、この文字に特別な意味があることを示します.次の例を見てみましょう.
naまたはsaの先頭のファイルを見つけて、その後ろにどんな数字がついていても.
テキスト:
sales.txt
na1.txt
na2.txt
sa1.txt
sanatxt.txt
正規表現:.a.txt
結果:
【sal】es.txt
【na1】.txt
【na2】.txt
【sa1】.txt
【sanatxt】.txt
分析:この正則はna 1.txt,na 2.txt,sa 1.txtを探し出したが,予想外の結果が2つ見つかった.なぜなら.a..txtという正則の.文字は任意の文字と一致するからです..文字自体を一致させるには、エスケープが必要です.正則を.a..txtに変更すると、私たちのニーズを満たすことができます.
注意:javaを使用する場合は、java言語でもエスケープ文字であるため、.a..txtという正規表現は.a..txtと書くべきです.
四、まとめ
正規表現は通常モードと略称され、実際にはいくつかの文字からなる文字列である.これらの文字は、通常の文字(純粋なテキスト)またはメタ文字(特殊な意味を持つ特殊な文字)であってもよい.ここでは、通常文字とメタ文字を使用して単位文字を一致させる方法について説明します.任意の文字を一致させることができます.文字をエスケープするために使用されます.正規表現では、特殊な意味を持つ文字列は常に文字で始まります.次の記事では、文字のセットを一致させる方法について説明します.
PS:ここでは、非常に便利な正規表現ツールを2つ提供します.
JavaScript正規表現オンラインテストツール:http://tools.jb51.net/regex/javascript
正規表現オンライン生成ツール:http://tools.jb51.net/regex/create_reg
本文で述べたことは、大家の正規表現の学習に役立つことを望んでいる.