正規表現ツール |
grep |
PowerGREP |
RegexBuddy |
RegexMagic |
一般的なアプリケーション |
EditPad Lite |
EditPad Pro |
言語およびライブラリ |
Boost |
Delphi |
GNU (Linux) |
Groovy |
Java |
JavaScript |
.NET |
PCRE (C/C++) |
PCRE2 (C/C++) |
Perl |
PHP |
POSIX |
PowerShell |
Python |
R |
Ruby |
std::regex |
Tcl |
VBScript |
Visual Basic 6 |
wxWidgets |
XML Schema |
Xojo |
XQuery & XPath |
XRegExp |
データベース |
MySQL |
Oracle |
PostgreSQL |
このサイトの詳細 |
はじめに |
正規表現クイックスタート |
正規表現チュートリアル |
置換文字列のチュートリアル |
アプリケーションと言語 |
正規表現の例 |
正規表現リファレンス |
置換文字列リファレンス |
書籍レビュー |
印刷可能な PDF |
このサイトについて |
RSS フィードおよびブログ |
POSIX または「UNIX のポータブルオペレーティングシステムインターフェイス」は、(UNIX)オペレーティングシステムがサポートするいくつかの機能を定義する標準のコレクションです。これらの標準の 1 つは、2 つの種類の正規表現を定義しています。grep や egrepなどの正規表現を含むコマンドは、POSIX 準拠 UNIX システムでこれらの種類を実装します。いくつかのデータベースシステムでも POSIX 正規表現を使用しています。
基本正規表現または BRE の種類は、従来の UNIX grep コマンドで使用される種類に似た種類を標準化しています。これは、今日でも使用されている最古の正規表現の種類です。この種類を際立たせることの 1 つとして、ほとんどのメタ文字には、メタ文字にその種類を与えるためにバックスラッシュが必要です。POSIX ERE を含むほとんどの他の種類では、メタ文字の意味を抑制するためにバックスラッシュを使用します。メタ文字にならない文字をエスケープするためにバックスラッシュを使用するのはエラーです。
BRE では、POSIX ブランケット表現がサポートされています。これは、他の正規表現の種類の文字クラスに似ていますが、いくつかの特別な機能があります。省略形はサポートされていません。一般的なメタ文字を使用する他の機能には、改行以外の任意の文字に一致するドット、文字列の先頭と末尾に一致するキャレットとドル記号、およびトークンを 0 回以上繰り返す星があります。これらの文字を文字通りに一致させるには、バックスラッシュでエスケープします。
他の BRE メタ文字には、特別な意味を与えるためにバックスラッシュが必要です。その理由は、最も古いバージョンの UNIX grep ではこれらをサポートしていなかったからです。grep の開発者は、これらの文字をリテラル文字として使用できる既存の正規表現との互換性を維持したかったのです。BREa{1,2}に一致し、a{1,2}文字通り、a\{1,2\}に一致し、aまたはaa. いくつかの実装は\?と\+を構文のオプションとしてサポートしますが\{0,1\}と\{1,\}、ただし\?と\+は POSIX スタンダードに含まれません。トークンはでグループ化できます。\(と\)は通常の\1から\9までです。最大で 9 個のグループが許可されます。たとえば\(ab\)\1に一致し、ababです。一方(ab)\1は無効になります。これは、参照されるバックリファレンスに対するキャプチャリンググループが存在しないためです。\1を使って\\1をそのまま\1に一致します。
POSIX BRE はその他の機能をサポートしていません。 alternation さえもサポートしていません。
Extended Regular Expressions または ERE フレーバーは、UNIX の egrep コマンドで使用されるフレーバーに似たフレーバーを標準化します。「拡張」は、括弧式、ドット、キャレット、ドル記号、アスタリスクのみを使用した元の UNIX grep に関連しています。ERE は、これらの記号を BRE と同じようにサポートします。最新の多くの正規表現フレーバーは、ERE フレーバーの拡張です。現在の基準では、POSIX ERE フレーバーはかなり貧弱です。POSIX 基準は 1986 年に定義され、それ以来、正規表現は大幅に進歩しました。
egrep の開発者は grep との互換性を維持しようとはせず、代わりに別のツールを作成しました。したがって、egrep と POSIX ERE はバックスラッシュなしで追加のメタ文字を追加します。最新の正規表現フレーバーと同様に、バックスラッシュを使ってすべてのメタ文字の意味を削除できます。メタ文字ではない文字をエスケープすると、エラーになります。
修飾子?, +, {n}, {n,m}と{n,}は、それぞれ前述のトークンをゼロまたは 1 回、1 回以上、n 回、n 回から m 回、n 回以上繰り返します。 Alternation は通常のバーでサポートされています|。飾り気のない括弧はグループを作成します。たとえば(abc){2}に一致し、abcabcです。POSIX 基準はバックリファレンスを定義していません。実装によってはサポートしていますが\1から\9は ERE の基準には含まれません。ERE は、POSIX BRE ではなく古い UNIX grep の拡張です。
拡張はこの範囲内に完全に収まります。
alternationに関するチュートリアル トピックで、正規表現エンジンは一致する代替が検出されるとすぐに停止すると説明しました。ただし、POSIX 基準では最長一致を返すことが求められています。適用するとSet|SetValueにSetValueを適用した場合、POSIX 準拠の正規表現エンジンはSetValue全体に一致します。エンジンがregex 指向 NFA エンジンであっても、POSIX では、すべての代替策を試行し、この場合SetValueを返して、DFA テキスト指向一致をシミュレートする必要があります。従来の NFA エンジンはSetに一致します。これは、この Web サイトで説明するすべてのその他の正規表現フレーバーと同様です。
POSIX 準拠のエンジンでも、依然として最左一致を検索します。適用する場合Set|SetValueにSet or SetValueを適用すると、Setに一致します。正規表現が有効な一致を検出できる文字列内の最左位置は最初の位置です。文字列内のさらに後方に一致が見つかってもそれは関係ありません。正規表現を 2 回目に適用して、文字列内の最初のスペースから続行するとSetValueに一致します。従来の NFA エンジンはSet文字列の最初の文字で最初のマッチを行い、Set文字列の3番目の単語の最初の文字で2番目のマッチを行います。
| クイック スタート | チュートリアル | ツール & 言語 | 例 | リファレンス | 書籍レビュー |
| grep | PowerGREP | RegexBuddy | RegexMagic |
| EditPad Lite | EditPad Pro |
| Boost | Delphi | GNU (Linux) | Groovy | Java | JavaScript | .NET | PCRE (C/C++) | PCRE2 (C/C++) | Perl | PHP | POSIX | PowerShell | Python | R | Ruby | std::regex | Tcl | VBScript | Visual Basic 6 | wxWidgets | XML スキーマ | Xojo | XQuery & XPath | XRegExp |
| MySQL | Oracle | PostgreSQL |
ページの URL: https://regular-expressions.dokyumento.jp/posix.html
ページの最終更新日時: 2021 年 8 月 24 日
サイトの最終更新日時: 2024 年 3 月 15 日
Copyright © 2003-2024 Jan Goyvaerts. All rights reserved.