正規表現の概要を構築します
一致するコンストラクト
キャラクター
x文字x
//バックスラッシュ文字
/0n文字n octal値0(0 <= n <= 7)
/0nn文字nn octal値0(0 <= n <= 7)
/0mnn文字mnn octal値0(0 <= m <= 3、0 <= n <= 7)
/xhh文字HH 16進数0x
/uhhhh文字hhhhh hhhhhhhhhhh hhhhh value 0x
/tタブ( '/u0009')
/n新しいライン(ラインブレーク)文字( '/u000a')
/rキャリッジリターン文字( '/u000d')
/fページブレイク( '/u000c')
/アラーム(ベル)シンボル( '/u0007')
/eエスケープ文字( '/u001b')
/xに対応するCX
キャラクタークラス
[ABC] A、B、またはC(単純なクラス)
[^abc] a、b、またはc(否定)を除くキャラクター
[a-za-z] aからzまたはaからz、両端の文字が含まれています(範囲)
[ad [mp]] aからdまたはmからp:[a-dm-p](union)
[az && [def]] d、eまたはf(交差)
[az && [^bc]] aからz、bおよびc:[ad-z](minus)を除く
[az && [^mp]] aからz、mからp:[a-lq-z](マイナス)
事前定義された文字クラス
。任意のキャラクター(ラインエンディングキャラクターと一致する場合と一致する場合もありません)
/D番号:[0-9]
/d非番号:[^0-9]
/sホワイトスペース文字:[/t/n/x0b/f/r]
/s非白文字文字:[^/s]
/w単語文字:[a-za-z_0-9]
/w非単語文字:[^/w]
POSIX文字クラス(US-ASCIIのみ)
/p {lower}小文字アルファベット文字:[az]
/p {upper}大文字のキャラクター:[az]
/p {ascii}すべてのascii:[/x00-/x7f]
/p {alpha}アルファ文字:[/p {lower}/p {upper}]
/p {digit} 10進数:[0-9]
/p {alnum}英数字:[/p {alpha}/p {digit}]]
/p {punct}句読点:! "#$%& '()*+、 - 。/:; <=>?@[/]^_` {|}〜
/p {graph}目に見える文字:[/p {alnum}/p {punct}]
/p {print}印刷可能な文字:[/p {graph}/x20]
/p {blank}スペースまたはタブ文字:[ /t]
/p {cntrl}制御文字:[/x00-/x1f/x7f]
/p {xdigit} 16進数:[0-9a-fa-f]
/p {space}ホワイトスペース文字:[/t/n/x0b/f/r]
Java.lang.Characterクラス(単純なJava文字タイプ)
/p {javalowercase}はjava.lang.character.islowercase()に相当します
/p {javauppercase}はjava.lang.character.isuppercase()に相当します
/p {javawhitespace}はjava.lang.character.iswhitespace()に相当します
/p {javamirrored}はjava.lang.character.ismirrored()に相当します
Unicodeブロックとクラス
/p {ingreek}ギリシャ語のブロック内のキャラクター(単純ブロック)
/p {lu}大文字(シンプルなカテゴリ)
/p {sc}通貨シンボル
/p {ingreek}ギリシャ語のブロックを除くすべてのキャラクター(ネガティブ)
[/p {l} && [^/p {lu}]]すべての文字、大文字を除く(マイナス)
境界マッチャー
^行の始まり
$行の終わり
/bワード境界
/B非単語境界
/入力の開始
/g前の試合の終了
/z入力の終わり、最後のエンディング文字(ある場合)のみの場合のみ
入力 /zの終わり
貪欲な定量的言葉
x? x、一度または一度、いいえ
x* x、ゼロ、または複数回
x+ x、1回以上
x {n} x、正確にn回
x {n、} x、少なくともn回
x {n、m} x、少なくともn回、しかしm倍以下
消極的な定量的単語
x ?? x、一度または一度、いいえ
x*? x、ゼロ、または複数回
x+? x、一度以上
x {n}? x、正確にn倍
x {n、}? X、少なくともn回
x {n、m}? X、少なくともn回、しかしm倍以下
所有的な定量的単語
x?+ x、1回または1回、いいえ
x*+ x、ゼロ、または複数回
x ++ x、1回以上
x {n}+ x、正確にn回
x {n、}+ x、少なくともn回
x {n、m}+ x、少なくともn回、しかしm倍以下
論理演算子
xy x heel y
x | yxまたはy
(x)x、キャプチャグループとして
引用符
/n一致するnthキャプチャグループ
引用
/何もありませんが、次のキャラクターを引用します
/q何もありませんが、すべての文字を引用します /e
/e何もありませんが、 /qからの参照を終了します
特別建設(キャプチャされていない)
(?:x)x、非キャプチャグループとして
(?idmsux -idmsux)何もありませんが、フラグidmsuxをオンに一致させます - オフ
(?idmsux -idmsux:x)x、as idmsux on -off with flag
非キャプチャグループ(?= x)x、ゼロ幅の肯定的な見た目を介して
(?!x)x、幅ゼロ幅のネガティブヘッドを介して
(?<= x)x、ゼロ幅ポジティブルックベヒンドを介して
(?<!x)x、ゼロ幅からネガティブルックベヒンド
(?> x)x、独立した非キャプチャグループとして
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
バックスラッシュ、エスケープ、および参照
バックスラッシュ文字( '/')は、上記の表で定義されているように、エスケープコンストラクトを参照するために使用され、非エスケープのコンストラクトと解釈される他の文字を参照するためにも使用されます。したがって、式//は単一のバックスラッシュに一致し、 /{左ブラケットと一致します。
エスケープコンストラクトを表していないアルファベットのある文字の前に、バックスラッシュを使用するのは間違っています。それらは、正規表現言語の将来の拡張のために予約されています。バックスラッシュは、キャラクターが脱出された構造の一部ではないかどうかにかかわらず、非アルファベットのキャラクターの前に使用できます。
Java言語仕様の要件によれば、Javaソースコードの文字列のバックスラッシュは、ユニコードエスケープまたは他のキャラクターエスケープとして解釈されます。したがって、正規表現が保護されており、Java Bytecodeコンパイラによって解釈されないことを示すために、文字列に2つのバックスラッシュを使用する必要があります。たとえば、正規表現として解釈されると、文字列リテラル「/b」は単一のバックスペース文字と一致し、「// b」は単語の境界と一致します。文字列リテラル「/(hello/)」は違法であり、コンパイル時間エラーを引き起こします。文字列(hello)に一致するには、文字列リテラル「//(hello //)」を使用する必要があります。
キャラクタークラス
キャラクタークラスは他のキャラクタークラスに表示され、組合演算子(暗黙的に)および交差点演算子(&&)を含めることができます。ユニオンオペレーターは、オペランドクラスの1つに少なくともすべてのキャラクターを含むクラスを表します。交差点演算子は、2つのオペランドクラスのすべての文字を同時に含むクラスを表します。
文字クラス演算子の優先順位は次のとおりで、最高から最低まで順番に配置されています。
1リテラルエスケープ/x
2グループ化[...]
3レンジAz
4ユニオン[ae] [iu]
5交差点[az && [aeiou]]
さまざまなメタカラクターのセットが、実際にはキャラクタークラスの外側ではなく、キャラクタークラスの内側にあることに注意してください。たとえば、正規表現。特別な意味はキャラクタークラス内で失われ、表現はメタチャラクターを形成する範囲になります。
ラインエンディング文字
行の終了文字は、入力文字シーケンスの行の端をマークする1つまたは2つの文字のシーケンスです。次のコードは、行の終了文字として認識されます。
New Line(Line NewLine)文字( '/n')、
キャリッジリターンキャラクター( "/r/n")に続いて、新しいライン文字が続きます。
別のキャリッジリターン文字( '/r')、
次のライン文字( '/u0085')、
Line Delimiter( '/u2028')または
パラグラフセパレーター( '/u2029)。
UNIX_LINESモードがアクティブ化されている場合、新しいライン文字は一意に認識されているラインエンド文字です。
Dotallフラグが指定されていない場合、正規表現。任意の文字に一致させることができます(行の終わりを除く)。
デフォルトでは、正規表現 ^と$はラインエンディングを無視し、それぞれ入力シーケンス全体の開始と終了のみを一致させます。マルチラインモードがアクティブになっている場合、一致は、入力の開始と行の終了(入力の終了)の後にのみ発生します。マルチラインモードの場合、$は、ラインが終了するか、入力シーケンスの終了時にのみ一致します。
グループとキャプチャ
キャプチャグループは、開いたブラケットを左から右に計算することで番号を付けることができます。たとえば、式((a)(b(c))))には、そのようなグループが4つあります。
1((a)(b(c)))
2 /a
3(b(c))
4(c)
グループゼロは常に表現全体を表します。
キャプチャグループの名前は、この方法で名前が付けられています。これは、試合では、それらのグループに一致する入力シーケンスの各サブセンスが保存されるためです。キャプチャされたサブシーケンスは、後方参照を介して式で後で使用できます。または、マッチング操作が完了した後、マッチャーから取得できます。
グループに関連付けられたキャプチャ入力は、常に最近のグループに一致するサブシーケンスです。量子化のためにグループが再度計算された場合、その以前にキャプチャされた値は2番目の計算障害(ある場合)で保持されます。たとえば、文字列「ABA」を式(a(b)?)+に一致させると、2番目のグループが「b」に設定されます。各試合の開始時に、すべてのキャプチャされた入力が破棄されます。
(?)から始まるグループは、テキストをキャプチャせず、コンボカウントにカウントしない純粋な非キャプチャグループです。
上記は、編集者からもたらされた正規表現(文法記事で推奨)のすべての内容です。誰もがwulin.comをもっとサポートできることを願っています〜