Java が正規表現のどの標準をサポートしているかを知りたかったのです。標準という言葉は、IEEE POSIX BRE、ERE、および SRE をサポートしていることを意味します。
誰でもアイデアを与えることができますか?
返信ありがとうございます。
Oracle のこのドキュメントには、Java SE 7 でサポートされている正規表現構造に関する広範な情報が含まれていますが、サポートされている標準の種類については言及されていません。
Perl 5 との比較
パターン エンジンは、Perl 5 で行われているように、順序付けられた交替を使用して従来の NFA ベースのマッチングを実行します。
このクラスでサポートされていない Perl コンストラクト:
- 定義済みの文字クラス (Unicode 文字)
\h
水平方向の空白\H
非水平空白\v
縦の空白\V
非垂直空白\R
任意の Unicode 改行シーケンス\u000D\u000A|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029]
\X
Unicode 拡張書記素クラスタに一致- nthcapturing グループの backreference構造と、
\g{n}
named-capturing グループの \g{name}。\N{name}
名前による Unicode 文字の名前付き文字構造。- 条件構文
(?(condition)X)
と(?(condition)X|Y)
,- 埋め込みコード構成体
(?{code})
および(??{code})
、- 埋め込みコメント構文
(?#comment)
、および- 前処理操作
\l
、\u
、\L
、および\U
。このクラスでサポートされているが Perl ではサポートされていない構文:
- 上記の文字クラスの和集合と交差。
Perl との主な違い:
Perl では、
\1
スルー\9
は常に後方参照として解釈されます。バックスラッシュでエスケープされた 9 より大きい数値は、少なくともその数の部分式が存在する場合、後方参照として扱われます。それ以外の場合は、可能であれば、8 進エスケープとして解釈されます。このクラスでは、8 進エスケープは常にゼロで開始する必要があります。このクラスでは、\1
スルー\9
は常に後方参照として解釈され、正規表現のそのポイントに少なくともその数の部分式が存在する場合、より大きな数が後方参照として受け入れられます。グループの既存の数に、またはそれは 1 桁です。Perl は
g
フラグを使用して、最後のマッチが中断されたところから再開するマッチを要求します。この機能は、Matcher
クラスによって暗黙的に提供されます。マッチャーがリセットされない限り、find メソッドの呼び出しが繰り返されると、最後の一致が中断されたところから再開されます。Perl では、式のトップ レベルに埋め込まれたフラグが式全体に影響します。このクラスでは、埋め込みフラグは、トップ レベルにあるかグループ内にあるかに関係なく、常に表示された時点で有効になります。後者の場合、フラグは Perl と同様にグループの最後に復元されます。