ホームページ > Java > &#&チュートリアル > Java 正規表現の詳細な紹介

Java 正規表現の詳細な紹介

PHP中文网
リリース: 2017-06-22 14:52:38
オリジナル
1331 人が閲覧しました

式の意味:

x 文字 x。たとえば、 a は文字 a
\ バックスラッシュ文字を表します。書き込む場合は「\\」と書きます。 (注: Java は最初の解析中に \\ を正規表現 \ に解析し、次に 2 回目の解析中に正規表現 \ に解析するため、1.1 にリストされていないエスケープ文字 (1.1 の \ を含む) はすべて使用する必要があります。 2回書かれます)

(行末文字と一致する場合もあれば一致しない場合もあります)
d 数字: [0-9]
D 非数字: [^0-9]
s 空白文字: [tnx0Bfr]
S 非空白文字: [^s ]
w 単語文字: [a-zA-Z_0-9]
W 単語以外の文字: [^w]
4.POSIX 文字クラス (US-ASCII のみ) (バックスラッシュは 2 回記述する必要があることに注意してください。 p{Lower} は \p{Lower})
p{Lower} 英小文字: [a-z] と書きます。
p{Upper} 英大文字: [A-Z]
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{空白} スペースまたはタブ文字:[t]
p{Cntrl} 制御文字:[x00-x1Fx7F]
p{XDigit} 16進数:[0-9a-fA-F]
p{スペース} 空白文字:[ tnx0Bfr]
5.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() と同等
6.Unicode ブロックとカテゴリ クラス
p{InGreek} ギリシャ語ブロックの文字(単純ブロック)
p{Lu} 大文字 (単純クラス)
p{Sc} 通貨記号
P{InGreek} ギリシャ語ブロック (否定) を除くすべての文字
[p{L}&&[^p{Lu}] ] 大文字 (マイナス) を除くすべての文字
7. 境界マッチャー
^ 行の先頭に ^ を使用します。例: (abc) は abc で始まる文字列を表します。 Pattern p = Pattern.compile(regex,Pattern.MULTILINE);
$ のように、コンパイル時にパラメータ MULTILINE を設定する必要があります。 例: (^bca).*( 。 abc$) は、bca で始まり abc で終わる行を意味します。
b 単語の境界。たとえば、 b(abc) は、単語の先頭または末尾に abc が含まれていることを意味します (abcjj、jjabc はすべて一致します)
B 非単語境界。たとえば、B(abc) は、単語の途中に abc が含まれていることを意味します (jjabcjj は一致しますが、jjabc、abcjj は一致しません)
A 入力の先頭
G 前の一致の末尾 (個人的には、このパラメータは役に立たない)。たとえば、\Gdog は、前の一致の最後にある犬を検索することを意味します。犬がない場合は、最初から検索します。先頭が犬でない場合は、一致しないことに注意してください。
Z 入力の終わり。最終ターミネータ (存在する場合) にのみ使用されます。
行ターミネータは、一連の入力文字の行の終わりをマークする 1 つまたは 2 つの文字のシーケンスです。
次のコードは行終端記号として認識されます:
- 改行 (ラインフィード) 文字 ('n')、
- 復帰文字 (「rn」) とそれに続く改行文字、
- 単一の復帰文字 ( 'r')、
-次の行文字 ('u0085')、
-行区切り文字 ('u2028') または
-段落区切り文字 ('u2029)。
z 入力の終わり
パターンをコンパイルするときに、1 つ以上のフラグを設定できます。たとえば、
Pattern pattern = Pattern.compile(patternString,Pattern.CASE_INSENSITIVE + Pattern.UNICODE_CASE);
次の 6 つのフラグがサポートされています。 CASE_INSENSITIVE: 大文字と小文字に関係なく文字を照合します。このフラグはデフォルトで US ASCII 文字のみを考慮します。
‐UNICODE_CASE: CASE_INSENSITIVE と組み合わせる場合、Unicode 文字マッチングを使用します
‐MULTILINE: ^ と $ は入力全体ではなく、行の先頭と末尾に一致します
‐UNIX_LINES: 複数行モードで ^ と $ を一致させる場合、^ と $ のみに一致します$ 'n' は行終端記号として扱われます
-DOTALL: このフラグが使用されると、 . 記号は行終端記号を含むすべての文字と一致します
-CANON_EQ: 貪欲な数量子
X ではなく、Unicode 文字の正規の等価性を考慮します。 1 回かどうか
X* X、0 回以上
X+ X、1 回以上
X{n} m} X、少なくとも n 回、ただし m 回以下
9.消極的数量詞
X?? n}? X、正確に n 回
X{n,}? X、少なくとも n 回
X{n,m}? X、少なくとも n 回、ただし m 回以下
10. 所有量指定子
または複数回
X{n}+ X、正確に n 回
X{n,}+ X、最小 n 回
X{n,m}+ Possessive との違いは次のとおりです。 (ファジー処理が実行される場合にのみ適用されることに注意してください。) 貪欲量指定子は、ファジー一致文字列全体を読み取るため、「貪欲」であると見なされます。初めて。最初の一致試行 (入力文字列全体) が失敗した場合、マッチャーは一致した文字列の最後の文字から 1 文字後退して再試行し、一致が見つかるか残りの文字がなくなるまでこのプロセスを繰り返します。撤退できる。式で使用される量指定子に応じて、最後に照合しようとするのは 1 文字または 0 文字です。
ただし、消極的量指定子は逆のアプローチをとります。つまり、一致する文字列の先頭から開始し、その後、一度に 1 文字ずつ読み取って一致を検索します。最後に照合しようとするのは、入力文字列全体です。
最後に、所有量指定子は常に入力文字列全体を読み取り、1 つ (そして 1 つだけ) の一致を試みます。貪欲な数量詞とは異なり、所有格は決して後退しません。
11.キャプチャ グループとしての論理演算子
XY X の後に Y
X|Y X または Y
(X) X が続きます。たとえば、(abc) は、abc 全体をキャプチャすることを意味します
12.後方参照
n 一致する n 番目のキャプチャ グループ
キャプチャ グループには、左から右に左括弧を数えることによって番号を付けることができます。たとえば、式 ((a) (b (c))) には、そのようなグループが 4 つあります:
1 ((a) (b (c)))
2 a
3 (b (c))
4 (C)
たとえば、(ab)341 は ab34ab を表し、(ab)34(cd)12 は ab34cdabcd を表します。
13. 引用
何もしないが、次の文字を引用する
Q 何もしないが、E までのすべての文字を引用する。 QE 間の文字列は変更されずに使用されます (1.1 のエスケープ文字を除く)。たとえば、ab\Q{|}\\E
は ab{|}\
E Nothing と一致しますが、Q
14 から始まる参照を終了します。非キャプチャグループ
(?idmsux-idmsux) 何もしませんが、一致フラグをオンからオフに変更します。例: 式 (?i)abc(?-i)def このとき、(?i) は大文字と小文字を区別しないスイッチをオンにし、abc は
idmsux に一致します。 説明は次のとおりです:
-i CASE_INSENSITIVE: US-ASCII 文字セット大文字と小文字は区別されません。 (?i)
‐d UNIX_LINES: UNIX 改行をオンにする
‐m MULTILINE: 複数行モード (?m)
UNIX のラップ動作は n
WINDOWS のラップ動作は rn(?s)
‐u UNICODE_CASE: Unicode はサイズではありませんセンシティブな書き込み。 (?u)
‐x コメント: パターン内でコメントを使用でき、パターン内の空白を無視し、最後まで「#」を使用できます (# の後にコメントが続きます)。 (?x) たとえば、(?x)abc#asfsdadsa は、指定されたフラグをオンまたはオフにして非キャプチャ グループとして文字列 abc
(?idmsux-idmsux:X) X と一致させることができます。上記と同様に、上記の式は、ゼロ幅の正の先読みによって、(?i:abc)def または (?i)abc(?-i:def)
(?=X) X として書き直すことができます。幅ゼロの正の先読みアサーションは、部分式 X がこの位置の右側に一致する場合にのみ一致を継続します。たとえば、w+(?=d) は文字の後に数字が続くことを意味しますが、ゼロ幅の負の先読みによって数字
(?!X) X を取得しません (バックトラッキングなし)。幅ゼロの否定先読みアサーション。部分式 X がこの位置の右側に一致しない場合にのみ、一致を続けます。たとえば、w+(?!d) は、文字の後に数字が続かず、数字がキャプチャされないことを意味します。
(?(? (?>X) X、独立した非キャプチャグループとして (バックトラッキングなし)
(?=X) と (?>X) の違い たとえば、一致した文字列が abcm の場合
、式が a(?:b|bc)m の場合に一致することができ、式が a(?>b|bc) の場合にも一致する可能性があります



以上がJava 正規表現の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート