13

Java が使用する正規表現エンジンはどれですか?

私が使用する場合、RegexBuddyのようなツールで

[a-z&&[^bc]]

Java でのその表現は良いのですが、RegexBuddy では理解されていません。

実際、次のように報告されています。

以下のリストに存在する単一の文字に一致する[a-z&&[^bc]

  • ~ の範囲のa文字z:a-z
  • 文字の 1 つ&[^bc:&&[^bc
  • 文字をそのまま一致させる]:]

aとの間の文字とz交差する文字を一致さbせたいc

4

3 に答える 3

21

ほとんどの正規表現フレーバーと同様にjava.util.regex.Pattern、他のものと完全に互換性がない可能性がある構文を持つ独自の特定の機能があります。これには、文字クラスの結合、交差、および減算が含まれます。

  • [a-d[m-p]]:aを通じてd、または: (ユニオン)mを通じてp[a-dm-p]
  • [a-z&&[def]]: de、またはf (交点)
  • [a-z&&[^bc]]:aを介して、および: (減算)zを除くbc[ad-z]

Java 正規表現の最も重要な「警告」は、文字列全体matchesに対してパターンを一致させようとすることです。これは、ほとんどのエンジンでは一般的ではなく、混乱の原因となる場合があります。

こちらもご覧ください


文字クラス減算について

引き算を使用すると、たとえば Java で「すべての子音」を として定義できます[a-z&&[^aeiou]]

この構文は Java に固有です。XML スキーマ、.NET、JGSoft、および RegexBuddy では、[a-z-[aeiou]]. 他のフレーバーは、この機能をまったくサポートしていない場合があります。

参考文献

関連する質問

于 2010-07-08T08:16:23.590 に答える
4

Java は独自の正規表現エンジンを使用しており、その動作はPatternクラスで定義されています。

Eclipse プラグインまたはオンラインでテストできます。

于 2010-07-08T08:12:26.083 に答える
2

RegexBuddy は、Java 正規表現フレーバーに固有の文字クラスの結合、交差、および減算構文をまだサポートしていません。これは、RegexBuddy がまだサポートしていない Java 正規表現構文の唯一の部分です。RegexBuddy の将来のバージョンでこれを実装する予定です。これが延期された理由は、他の正規表現フレーバーがこの構文をサポートしていないためです。

PS: 特に RegexBuddy について質問がある場合は、質問に「regexbuddy」タグを追加してください。すると、RSS リーダーに質問が自動的に表示されます。「正規表現」タグを使用していない質問が多すぎるため、私はそのタグを使用していません。

于 2010-07-09T02:20:55.737 に答える