いう正規表現の場合、最初の括弧は\1という表現でも\k<year>という表現でも参照できる。2.000以降で使用可能です。いう名前の括弧によって捕獲された文字列を参照する。該当する括弧が正規表現中に存在していなければerror_backrefがthrowされる。2.000以降で使用可能です。(?:...)グループ化。異なりグループ化のみを行って文字列の捕獲は行わない。そのため後方参照用の番号も割り振られない。「白い・白く・白かった」のいずれかにマッチするが、送り仮名の部分を後から参照することはできない。文字列の捕獲を行わぬかわりに照合処理が少し速くなる。位置にマッチするもの^文字列の最初にマッチ。multilineオプション指定時には、それに加えて文字列中のあらゆる改行の直後(行頭)にもマッチ。$文字列の最後にマッチ。multilineオプション指定時には、それに加えて文字列中のあらゆる改行の直前にもマッチ。\b文字クラスの外側では\wと\Wとの境界にマッチ。\B文字クラスの外側では\bがマッチしないところにマッチ。文字クラスの内側で使うとerror_escapeがthrowされる。(?=...)肯定先読み。後ろに「い・く・かった」のいずれかが続く「白」にマッチする。(?!...)否定先読み。後ろに「い・く・かった」のいずれもが続かない「白」にマッチする(白黒、白鳥等)。(?<=...)肯定戻り読み。前に「あん・アン」のいずれかが先行する「パン」にマッチする。1では、(...)内は/(?<=abc|def)/や/(?<=\d{2})/のような固定幅の文字列にマッチする表現のみ指定可能です。固定幅でない時はerror_lookbehindがthrowされてきます。2.000以降にはこのような制限はありません。(?<!...)否定戻り読み。前に「あん・アン」のいずれも先行しない「パン」にマッチする(餡パン、フライパン、シャンパン等)。1では、(...)内は固定幅の文字列のみ指定可能。固定幅でない時はerror_lookbehindがthrowされてきます。2.000以降にはこのような制限はありません。この表にない組み合わせで使われたりした時は、error_escapeがthrowされてきます。続く文字そのもの」として解釈されていましたが、2.301以降はECMAScriptの仕様に合わせてエラー扱いするようになりました。ように、数字のほうはその1文字だけからなる文字クラスとして書く」の2つがあります。SRELLのパターンコンパイラはどちらの書き方も同じ内部表現に変換します。ような8進数表現が存在しません。して解釈し、1-9で始まる数字が続く時は後方参照として解釈、その際対応する()が正規表現中に存在しなければエラーと定められています。以前の正規表現には、Perlにあるようなシングルラインモードが存在しませんでした。1にもシングルラインモードがありません。(空集合の補集合)で代用できます。肯定先読みを使うことで、Javaなどで利用可能な文字クラス同士のAND演算が出来ます(例:/(?=[cgkq])[a-z]/)。この応用で、否定先読みを使うと減算相当の処理も出来ます(例:/(?![cgkq])[a-z]/)。std::regexとの相違点Unicode対応のためのSRELL拡張Unicode対応のために、次のような型がSRELLには追加されています。SRELL_CPP20_CHAR8_ENABLEDマクロ非定義時はu8regexとしてもtypedefされる。WCHAR_MAXが0xffff以上、0x10ffff未満ならu16wregexが定義され、WCHAR_MAXが0x10ffff以上ならu32wregexが定義される。SRELL_CPP20_CHAR8_ENABLEDマクロ定義時のみ。SRELL_CPP11_CHAR1632_ENABLEDマクロ定義時のみ。C++11対応コンパイラ用。#endif#endifUTF-8やUTF-16に固有の処理をしているのはそれぞれ上記のu8regex_traits、u16regex_traitsです。ような「UTF-16文字列をuint32_t型の配列で処理する型」なるものを作ることもできます。SRELL_CPP20_CHAR8_ENABLEDマクロ非定義時はそれぞれu8[cs]matchにもtypedefされる。WCHAR_MAXが0xffff以上、0x10ffff未満ならu16w[cs]matchが定義され、WCHAR_MAXが0x10ffff以上ならu32w[cs]matchが定義される。SRELL_CPP20_CHAR8_ENABLEDマクロ定義時のみ。SRELL_CPP11_CHAR1632_ENABLEDマクロ定義時のみ。C++11対応コンパイラ用。lookbehind_limitというメンバが追加されています。詳細はmatch_lblim_availフラグの説明のところに記してあります。SRELL_CPP20_CHAR8_ENABLEDマクロ非定義時はそれぞれu8[cs]sub_matchにもtypedefされる。WCHAR_MAXが0xffff以上、0x10ffff未満ならu16w[cs]sub_matchが定義され、WCHAR_MAXが0x10ffff以上ならu32w[cs]sub_matchが定義される。SRELL_CPP20_CHAR8_ENABLEDマクロ定義時のみ。SRELL_CPP11_CHAR1632_ENABLEDマクロ定義時のみ。C++11対応コンパイラ用。#endif#endif各prefixの意味するところは次の通りです。コンパイラがchar8_t型に対応しているかどうか(SRELL_CPP20_CHAR8_ENABLEDマクロ定義の有無で判断)で次のように変わります。char8_t対応なら:char8_t型配列またはstd::u8string型インスタンスをUTF-8文字列として扱う。char8_t未対応なら:u8c-に同じ。char16_t型配列またはstd::u16string型インスタンスをUTF-16文字列として扱う。char32_t型配列またはstd::u32string型インスタンスをUTF-32文字列として扱う。2.002まではこれがu8-というprefixを使用していました)。wchar_t型配列またはstd::wstring型インスタンスをUTF-16文字列として扱う(WCHAR_MAXが0xffff以上0x10ffff未満の時のみ定義)。wchar_t型配列またはstd::wstring型インスタンスをUTF-32文字列として扱う(WCHAR_MAXが0x10ffff以上の時のみ定義)。prefixの付いた型がtypedefされています。基本的な使い方は次の通りです。上3行と下3行とは排他的。wchar_tが21ビット未満なら上、以上なら下。found...");C++11より前のコンパイラでは、wchar_tが16ビット以上かつ21ビット未満の環境ならu8c-型とu16w-型とが、wchar_tが21ビット以上ある環境ならu8c-型とu32w-型とがそれぞれ利用可能です。そのような環境でも、SRELLをincludeする前に次のようなコードを書いておけば、u8c-型、u16-型、u32-型を3つとも利用することができます。16ビット以上ある符号無しの型をtypedefする。32ビット以上ある符号無しの型をtypedefする。用に、次のメンバ函数がmatch_resultsクラスに追加されています。const;使い方はstd::regexにある同名の函数と同じです。引数として括弧の番号ではなく括弧の名前を渡すという点のみが異なります。std::regexにもある括弧の番号を使ったアクセス。名前を使って同じ括弧へアクセス。