正規表現ツール |
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フィード&ブログ |
BoostはC++用の無料のソースコードライブラリです。ダウンロードして解凍した後、bootstrapバッチファイルまたはスクリプトを実行し、次にb2 --with-regexを実行してBoostの正規表現ライブラリをコンパイルします。次に、Boostを解凍したフォルダをC++コンパイラのインクルードパスに追加します。stage\libサブフォルダをリンカーのライブラリパスに追加します。その後、#include <boost/regex.hpp>をC++コードに追加して、Boost正規表現を使用できます。
C++Builderを使用する場合は、EmbarcaderoからC++Builderの特定のバージョンに対応するBoostライブラリをダウンロードする必要があります。取得するBoostのバージョンは、C++Builderのバージョンと、Win32をターゲットにしているかWin64をターゲットにしているかによって異なります。XE3からXE8のWin32コンパイラと、C++Builder 10 Seattleから10.1 BerlinのクラシックWin32コンパイラは、すべてBoost 1.39を使用しています。XE3からXE6のWin64コンパイラはBoost 1.50を使用しています。XE7から10.1 BerlinのWin64コンパイラはBoost 1.55を使用しています。C++Builder 10以降の新しいC++11 Win32コンパイラは、Win64コンパイラと同じバージョンのBoostを使用しています。
このウェブサイトでは、Boost 1.38、1.39、および1.42から最新の1.73までを網羅しています。Boost 1.40では、Perl 5.10から借用した多くの新しい正規表現機能が導入されました。しかし、Boost 1.42まで修正されなかった深刻なバグも導入されました。そのため、Boost 1.40と1.41は完全に無視します。クラシックWin32 C++Builderコンパイラはこのバージョンに固定されているため、Boost 1.38と1.39(正規表現機能は同一)についても説明しています。他のコンパイラを使用している場合は、現在の古いバグを回避するために、Boost 1.42以降を使用する必要があります。バックリファレンスの動作が変更されるため、1.47より前のバージョンから1.47以降にアップグレードした場合、一部の正規表現の動作が変わる可能性があるため、1.47以降を使用することをお勧めします。
実際には、ほとんどの場合、BoostのECMAScript構文を使用します。これはデフォルトの構文であり、他の構文よりもはるかに多くの機能を提供します。このウェブサイトのチュートリアルで構文を言及せずにBoostについて説明している場合、記述されている内容はECMAScript構文に適用され、他の構文には適用されない場合があります。他の構文を使用するのは、古いPOSIXコードやUNIXスクリプトから既存の正規表現を再利用する場合だけです。
Boostのドキュメントでは、PerlやJavaScriptとの互換性、そしてboost::regexがC++11でstd::regexとして標準化されたことについて説明しています。Visual StudioとC++Builderに含まれるstd::regexのDinkumware実装とboost::regexを比較すると、クラスと関数テンプレートはほぼ同じであることがわかります。C++コンパイラは、boost::regexを使用したコードとstd::regexを使用したコードを同じように喜んでコンパイルします。そのため、このウェブサイトのstd::regexトピックで示されているすべてのコード例は、stdをboost.
に置き換えるだけで、Boostでも問題なく動作します。しかし、C++アプリケーションを実行すると、DinkumwareとBoostのどちらが正規表現を解釈しているかで大きな違いが生じる可能性があります。どちらも同じ6つの構文を提供していますが、それらの構文と動作は、2つのライブラリ間で同じではありません。Boostはregex_constants::perlを定義していますが、これはC++11標準の一部ではありません。これは実際には追加の構文ではなく、単にECMAScriptの同義語です。JavaScript実際のJavaScriptと実際のPerlで使用される正規表現フレーバーには大きな違いがあります。したがって、これらを1つのフレーバーまたは構文として扱うライブラリは、どちらにも互換性がないことは明らかです。BoostのECMAScript構文は、実際のJavaScriptとPerlフレーバーの中間であり、Boost固有の機能と特性がいくつか追加されています。DinkumwareのECMAScript構文は実際のJavaScriptにより近いですが、それでも動作に大きな違いがあります。Dinkumwareは、JavaScriptにないPerlの機能を借用していません。
以下の表は、std::regexとBoostのECMAScript構文、および実際のJavaScriptとPerl間の最も重要な違いを強調したものです。いくつかは機能セットの明らかな違いです。しかし、他のものは、予期せず問題を引き起こす可能性のある微妙な動作の違いです。
機能 | std::regex | Boost | JavaScript | Perl |
---|---|---|---|---|
ドットが改行に一致する | しない | デフォルト | しない | オプション |
アンカーが改行に一致する | する | デフォルト | オプション | オプション |
改行文字 | CR、LF | CR、LF、FF、NEL、LS、PS | CR、LF、LS、PS | LF |
非参加グループへのバックリファレンス | 空文字列に一致 | 1.47以降失敗 | 空文字列に一致 | 失敗 |
空の文字クラス | 一致しない | 不可能 | 一致しない | 不可能 |
フリースペースモード | なし | あり | なし | あり |
モード修飾子 | なし | あり | なし | あり |
所有格量子化子 | なし | あり | なし | あり |
名前付きキャプチャ | なし | .NET構文 | なし | .NET&Python構文 |
再帰 | なし | アトミック | なし | バックトラッキング |
サブルーチン | なし | バックトラッキング | なし | バックトラッキング |
条件式 | なし | あり | なし | あり |
アトミックグループ | なし | あり | なし | あり |
アトミックグループはキャプチャグループをバックトラックする | n/a | なし | n/a | あり |
単語境界の先頭と末尾 | なし | あり | なし | なし |
標準POSIXクラス | あり | あり | なし | あり |
1文字のPOSIXクラス | なし | あり | なし | なし |
機能 | std::regex | Boost | JavaScript | Perl |
| クイックスタート | チュートリアル | ツール&言語 | 例 | リファレンス | 書評 |
| 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/boost.html
最終更新日: 2021年8月24日
サイト最終更新日: 2024年3月15日
Copyright © 2003-2024 Jan Goyvaerts. All rights reserved.