正規表現ツール |
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 フィード & ブログ |
「GNU’s Not Unix」の頭文字を取った GNU はすべての人気のある Unix システムで利用できるツールの無料かつオープンな実装を世界に提供することを目指したプロジェクトです。Linux システムのほとんどには GNU アプリケーションの完全なスイートが搭載されています。これには明らかに、grep、sed、awk などの従来の正規表現ユーティリティが含まれます。
これらのツールに関する GNU の実装は POSIX 規格 に従い、GNU 拡張機能が追加されています。GNU 拡張機能の追加により、基本正規表現 フレーバーと 拡張正規表現 フレーバーの両方がまったく同じ機能を提供します。唯一の違いは、BRE がバックスラッシュを使用してさまざまな文字に特殊な意味を与える一方、ERE がバックスラッシュを使用して同じ文字の特殊な意味をなくすことです。特殊文字ではない文字をエスケープするためにバックスラッシュを使用するのはエラーです。
基本正規表現または 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グループは装飾のない括弧で作成します。たとえば
abcabcPOSIX ERE は, バックリファレンス, をサポートしていません。GNU 拡張機能では、同じでグループ化できます構文を使用して追加します。追加の GNU 拡張機能GNU 拡張機能では、両方のフレーバーが同一になるだけでなく、新しい構文とまったく新しい機能もいくつか追加されています。省略形クラス, \w, \Wでグループ化できます\s\S
新機能は ワード境界と アンカーです。GNUでは、最新のフレーバーと同様に次のものがサポートされています。\bワード境界の位置と一致し、\B境界でない位置と一致します。\<ワードの開始位置と一致し、\>ワードの終了位置と一致します。アンカー\`(バッククォート) は対象文字列のまさに先頭と一致し、\'(シングルクォート) はまさに末尾と一致します。これらは、一度に複数の行のテキストに対して正規表現を照合できるツールと一緒に使用すると便利です。その場合は、^行の先頭と一致し、$末尾と一致します。
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 |
ページURL: https://regular-expressions.dokyumento.jp/gnu.html
ページの最終更新日: 2021年11月5日
サイトの最終更新日: 2024年3月15日
Copyright © 2003-2024 Jan Goyvaerts. All rights reserved.