クイック スタート
チュートリアル
ツール & 言語
リファレンス
書評
正規表現ツール
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
このサイトの詳しい情報
はじめに
正規表現クイックスタート
正規表現チュートリアル
置換文字列チュートリアル
アプリケーションと言語
正規表現例
正規表現リファレンス
置換文字列リファレンス
書評
プリント可能な PDF
このサイトについて
RSS フィード & ブログ
RegexBuddy—The best regex editor and tester for GNU users!

GNU 正規表現拡張

「GNU’s Not Unix」の頭文字を取った GNU はすべての人気のある Unix システムで利用できるツールの無料かつオープンな実装を世界に提供することを目指したプロジェクトです。Linux システムのほとんどには GNU アプリケーションの完全なスイートが搭載されています。これには明らかに、grep、sed、awk などの従来の正規表現ユーティリティが含まれます。

これらのツールに関する GNU の実装は POSIX 規格 に従い、GNU 拡張機能が追加されています。GNU 拡張機能の追加により、基本正規表現 フレーバーと 拡張正規表現 フレーバーの両方がまったく同じ機能を提供します。唯一の違いは、BRE がバックスラッシュを使用してさまざまな文字に特殊な意味を与える一方、ERE がバックスラッシュを使用して同じ文字の特殊な意味をなくすことです。特殊文字ではない文字をエスケープするためにバックスラッシュを使用するのはエラーです。

GNU 基本正規表現 (grep、ed、sed)

基本正規表現または BRE フレーバーは、現在も使用されている最も古い正規表現フレーバーです。GNU ユーティリティ grep、ed、sed はこれを使用します。このフレーバーを特徴付けるものの 1 つは、ほとんどのメタ文字は、メタ文字にフレーバーを与えるためにバックスラッシュを必要とすることです。GNU ERE を含むほとんどの他のフレーバーは、バックスラッシュを使用してメタ文字の意味を抑制します。特殊文字でない文字のエスケープにバックスラッシュを使用するには、エラーです。

BRE は、他の正規表現フレーバーの文字クラスと似ていますが、いくつかの特別な機能がある POSIX ブラケット式 をサポートしています。通常のメタ文字を使用した他の機能は、改行を除く任意の文字に一致する ドット、文字列の開始と終了に一致する キャレットとドル、およびトークンを 0 回以上繰り返す アスタリスク です。これらの文字のいずれかに文字通りに一致させるには、バックスラッシュでエスケープします。

他の BRE メタ文字にはバックスラッシュが必要となり、それらに特別な意味を持たせます。理由は、最も古いバージョンの UNIX grep がこれらをサポートしていなかったためです。grep の開発者は、これらの文字をリテラル文字として使用する可能性のある既存の正規表現との互換性を維持したかったのです。BREa{1,2}は一文字としてマッチしますa{1,2}一方a\{1,2\}は一文字としてマッチしますaまたはaaトークンは\(でグループ化できます\)。バックリファレンスは通常\1から\9までです。最大 9 つまでグループを許可します。たとえば\(ab\)\1は一文字としてマッチしますabab一方(ab)\1は無効です。バックリファレンスに対応するキャプチャグループがないためです。\を\1を使用して\\1一文字としてマッチします\1します。

POSIX BRE が上記で説明した機能を提供することに加え、GNU 拡張機能によって\?でグループ化できます\+代替構文として\{0,1\}でグループ化できます\{1,\}が提供されます。\|を使用して+, ?, |オルタネーションを追加します。これは POSIX BRE では非常に不足しています。実際には、これらの拡張機能により、GNU BRE は GNU ERE とまったく同じ機能を備えるようになります。ただし、

ブレースと括弧にはバックスラッシュが必要です。それらを削除するのではなく、特別な意味を与えるためです。

GNU 拡張正規表現 (egrep、awk、emacs)

拡張正規表現や ERE フレーバーは、GNU ユーティリティ

egrep?, +, および awk、emacs エディターで使用されます。このコンテキストでは、「拡張」は純粋に歴史的な参照です。GNU 拡張機能により、BRE と ERE フレーバーの機能は同じになりました。, メタ文字はすべて、最新の正規表現フレーバーと同様に、バックスラッシュを使用せずに意味を持ちます。バックスラッシュを使用して、すべてのメタ文字の意味を抑制できます。メタ文字でない文字をエスケープするとエラーになります。でグループ化できます反復記号{n}|{n,m}{n,}は一文字としてマッチしますは、それぞれ、前のトークンを 0 回または 1 回、1 回以上、n 回、n 回から m 回、n 回以上繰り返します。オルタネーションは、通常の縦棒.

でサポートされています。\1から\9グループは装飾のない括弧で作成します。たとえば

(abc){2}

abcabcPOSIX ERE は, バックリファレンス, をサポートしていません。GNU 拡張機能では、同じでグループ化できます構文を使用して追加します。追加の GNU 拡張機能GNU 拡張機能では、両方のフレーバーが同一になるだけでなく、新しい構文とまったく新しい機能もいくつか追加されています。省略形クラス, \w, \Wでグループ化できます\s\S

新機能は ワード境界アンカーです。GNUでは、最新のフレーバーと同様に次のものがサポートされています。\bワード境界の位置と一致し、\B境界でない位置と一致します。\<ワードの開始位置と一致し、\>ワードの終了位置と一致します。アンカー\`(バッククォート) は対象文字列のまさに先頭と一致し、\'(シングルクォート) はまさに末尾と一致します。これらは、一度に複数の行のテキストに対して正規表現を照合できるツールと一緒に使用すると便利です。その場合は、^行の先頭と一致し、$末尾と一致します。

Gnulib

GNUは、あなたが独自の(オープンソース)アプリケーションで正規表現の実装を使用できなければ、GNUではありません。それを行うには、 Gnulibをダウンロードする必要があります。含まれているものを使用しますgnulib-tool正規表現モジュールをアプリケーションのソースツリーにコピーします。

正規表現モジュールは、標準のPOSIX関数を提供しますregcomp()正規表現をコンパイルし、regerror()コンパイルエラーを処理し、regexec()コンパイルされた正規表現を使用して検索を実行し、regfree()処理が終了した正規表現をクリーンアップします。

| クイックスタート | チュートリアル | ツールと言語 |  | リファレンス | 書籍レビュー |

| 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 |