今回は、通常のメタキャラクターの使用について詳しく説明します。通常のメタキャラクターを使用する場合の注意事項は何ですか?実際のケースを見てみましょう。
注: すべての例では、正規表現のマッチング結果がソーステキストの[と]の間に含まれています。一部の例はJava自体で正規表現を使用して実装されます。については該当箇所で説明します。すべての Java サンプルは JDK1.6.0_13 でテストされています。
1. エスケープ特殊文字
メタキャラクターは、正規表現で特別な意味を持つ文字です。メタキャラクターは正規表現において特別な意味を持つため、これらの文字をそれ自体を表すために使用することはできません。メタキャラクタの前にバックスラッシュを付けることでメタキャラクタをエスケープすることができ、結果として得られるエスケープ シーケンスは、特別なメタキャラクタの意味ではなく、その文字自体と一致します。たとえば、[and] と一致させたい場合は、
と
のようにエスケープする必要があります。
メタ文字をエスケープするには、スラッシュ文字を使用する必要があります。これは、文字自体と一致させるには、\ にエスケープする必要があることを意味します。 Windows ファイルパスの一致など。
2. 空白文字の一致
メタ文字は、テキスト (. など) の一致に使用され、もう 1 つは正規表現の文法で必要とされる ([and] など) の 2 つのタイプに大別できます。 。
正規表現検索を実行するとき、元のテキスト内の非印刷空白文字と一致する必要がある状況によく遭遇します。たとえば、すべてのタブ文字を検索する必要がある場合や、そのような文字を正規表現に直接入力するのが難しい場合は、以下に示す特殊な文字を使用して入力できます。 :
b | 1文字戻る(削除) (Backspaceキー) |
f | フォームフィード |
n | 改行 |
r | キャリッジリターン |
t | Tab(タブキー) |
v | 垂直タブ |
ファイルから空白行を削除する例を見てみましょう:
Text:
8 5 4 1 6 3 2 7 9
7 6 2 9 5 8 3 4 1
9 3 1 4 2 7 8 5 6 16 9 3 8 7 5 1 2 4 1 8 3 4 9 9 9 6 1 9 5 36 7 8 8 9 1 5.4 8 9 5 3 1 7 6 2
レギュラー式:
rnrn
分析: rn は、Windows オペレーティング システムでテキスト行の終了タグとして使用される、キャリッジ リターンとライン フィードの組み合わせに一致します。正規表現 rnrn を使用した検索では、空行である 2 つの連続する行末タグが一致します。
注: Unix および Linux オペレーティング システムでは、テキスト行の終了に改行文字のみが使用されます。つまり、Unix または Linux システムで空白行と一致させるには、nn を使用するだけで、r を追加する必要はありません。 Windows と Unix/Linux の両方に適用できる正規表現には、オプションの r と一致する必要がある n、つまり r?nr?n を含める必要があります。これについては後の記事で説明します。
Java コードは次のとおりです: public static void matchBlankLine() throws Exception{
BufferedReader br = new BufferedReader(new FileReader(new File("E:/九宫格.txt")));
StringBuilder sb = new StringBuilder();
char[] cbuf = new char[1024];
int len = 0;
while(br.ready() && (len = br.read(cbuf)) > 0){
br.read(cbuf);
sb.append(cbuf, 0, len);
}
String reg = "\r\n\r\n";
System.out.println("原内容:\n" + sb.toString());
System.out.println("处理后:-----------------------------");
System.out.println(sb.toString().replaceAll(reg, "\r\n"));
}
原内容: 8 5 4 1 6 3 2 7 9 7 6 2 9 5 8 3 4 1 9 3 1 4 2 7 8 5 6 6 9 3 8 7 5 1 2 4 5 1 8 3 4 2 6 9 7 2 4 7 6 1 9 5 3 8 3 2 6 7 8 4 9 1 5 4 8 9 5 3 1 7 6 2 1 7 5 2 9 6 4 8 3 处理后:----------------------------- 8 5 4 1 6 3 2 7 9 7 6 2 9 5 8 3 4 1 9 3 1 4 2 7 8 5 6 6 9 3 8 7 5 1 2 4 5 1 8 3 4 2 6 9 7 2 4 7 6 1 9 5 3 8 3 2 6 7 8 4 9 1 5 4 8 9 5 3 1 7 6 2 1 7 5 2 9 6 4 8 3
文字セット (複数の文字の 1 つと一致する) が最も一般的な一致形式です。一般的に使用される一部の文字セットは、特殊なメタ文字に置き換えることができます。これらのメタキャラクターは、特定のクラスの文字に一致します (クラス メタキャラクター)。関連する文字を 1 つずつ列挙するか、文字間隔を定義することによって特定のクラスの文字に一致するため、クラス メタキャラクターは必須ではありません。構築される正規表現は次のとおりです。簡潔で理解しやすいため、実際のアプリケーションでよく使用されます。
1. 数字と数字以外を一致させるd 任意の数字は [0-9] または [0123456789] と同等ですD 任意の数字以外は [^0-9] または [^0123456789 ] と同等です
2. 文字と数字を文字や数字以外と一致させる
文字 (A ~ Z は大文字と小文字を区別しません)、数字、およびアンダースコアは、一般的に使用される文字のセットです:
w any文字 (大文字と小文字は区別されません)、数字、アンダースコアは [0-9a-zA-Z_]W と同等です。英数字以外の文字とアンダースコアは [^0-9a-zA-Z_]
3 と同等です。空白文字と非空白文字
s 以下の空白文字は [fnrtv]S と同等です 以下の空白文字は [^fnrtv]
注: s 内にないバックスペース メタ文字 b はありません範囲。
4. 16 進数または 8 進数の値と一致する
16 進数: 接頭辞 x を付けて指定します。たとえば、x0A は ASCII 文字 10 (改行文字) に対応し、その効果は n と同等です。8 進数: 接頭辞を使用します
POSIX 文字は、これまでに見たメタ文字とは異なります。Web ページの色を一致させるために正規表現を使用する例を見てみましょう。
Text: background-color:# 3636FF;height :30px;width:60px;">テスト
正規表現: #[[:xdigit:]] [[:xdigit:]] [[:xdigit:]] [ [:xdigit:] ] [[:xdigit:]] [[:xdigit:]]
結果:【#3636FF】;高さ:30px;幅:60px ;">テスト< ;/span>
注: ここで使用されるパターンは [[ で始まり ]] で終わります。POSIX 文字クラスを使用するには、POSIX 文字を [: と:] で囲む必要があります。外側の [と] は、文字はセットを定義するために使用され、内側の [and] 文字は POSIX 文字クラス自体の一部です。
JavaでのPOSIX文字表現は異なります。[:と:]の間には含まれませんが、pで始まり、{と}の間に含まれます。p{ASCII}が追加されます。以下:
p{Alnum} | 英数字: [p{Alpha}p{Digit}] |
p{Alpha} | 英字: [p{Lower}p{Upper}] |
p{ASCII} | すべてのASCII: [x00-x7F] |
p{空白} | スペースまたはタブ: [t] |
p{Cntrl} | 制御文字: [x00- x1Fx7F] |
p{桁} | 10 進数: [0-9] |
p{グラフ} | 表示可能な文字: [p{Alnum}p{Punct}] ... :!"# $%&'()*+,-./:;<=>?@[]^_`{|}~ |
p{スペース} | 空白文字: [ tnx0Bfr] |
p{Upper} | 大文字: [A-Z] |
p{XDigit} | 16 進数: [0-9a-fA-F] |
正規表現の位置一致チュートリアル (コード付き) | |
JS パスワード強度検証正規表現 (コード付き) |
以上が通常のメタキャラクターの使用方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。