日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
RE_FORMAT(7) FreeBSD 多方面の情報マニュアル RE_FORMAT(7) 名称 re_format -- POSIX 1003.2 正規表現 解説 正規表現 (``RE'') は、IEEE Std 1003.2 (``POSIX.2'') で定義されるように、2 つの形式があります: 現代の RE (ほぼ egrep(1) のもの、1003.2 は、これらを ``拡張'' RE と呼びます)、と古い RE (ほぼ ed(1) のもの、1003.2 で ``基本 的'' な RE) です。古い RE は、主に、いくつかの古いプログラムの後方互換性 のために存在しています。それらは、終わりで議論されます。IEEE Std 1003.2 (``POSIX.2'') は、オープンな RE の構文とセマンティックスのいくつかの側面 を残しています。`|' は、他の IEEE Std 1003.2 (``POSIX.2'') 実装に完全に移 植性がないかもしれない、これらの側面の決定を示します。 (現代の) RE は、`|' によって区切られた、1 つの | または空でない | ブラン チ (枝) です。それは、ブランチの 1 つと一致するあらゆるものと照合します。 ブランチは、連結された 1 つ | 以上のピース (部分) です。それは、最初のた めに一致するものに一致し、続く 2 番目のものに一致する、等々。 ピースは、アトムであり、たぶん単一の | `*', `+', `?' または繰り返し指定 (bound) が続きます。`*' が続くアトムは、アトムの 0 個以上の一致のシーケン スと一致します。`+' が続くアトムは、アトムの 1 つ以上の一致のシーケンスと 一致します。`?' が続くアトムは、アトムの 0 個または 1 つの一致のシーケン スと一致します。 繰り返し指定 (bound) は、`{' に符号なしの 10 進数の整数が続き、おそらく `,' が続き、おそらく別の符号なしの 10 進数の整数が続き、常に、`}' が続き ます。整数は、0 と RE_DUP_MAX (255 |) (両端を含む) の間でなければなりませ ん、それらが 2 つあるなら、最初は、2 番目を超過してはいけません。1 つの整 数 i を含んでいてコンマを含んでいない繰り返し指定 (bound) が後続するアト ムと、アトムの正確な i 個の一致のシーケンスと一致します。1 つの整数 i と コンマを含んでいる繰り返し指定 (bound) が後続するアトムは、アトムの i 個 以上の一致のシーケンスと一致します。2 つの整数 i と j を含んでいる繰り返 し指定 (bound) が後続するアトムは、アトムの i から j (両端を含んで) の一 致のシーケンスと一致します。 アトムは、(正規表現に対する照合と一致する) `()' で囲まれた正規表現、(空の 文字列に一致する)| `()' の空のセット、角括弧式 (以下を参照)、(あらゆる単 一文字に一致する) `.'、(行の初めの空の文字列に一致する) `^'、(行の終わり の空の文字列に一致する) `$'、文字の 1 つが後続する `\'、(通常文字として取 られたその文字と一致する) `^.[$()|*+?{\'、(通常文字として取られた文字が、 一致する) あらゆる他の文字が後続する| `\'、あたかも、`\' が存在しない|) か、または他の重要でない単一文字 (その文字と一致する) です。数字以外の文 字が後続する `{' は、通常文字で、繰り返し指定 (bound) の始まりではありま せん|。`\' で RE を終了することは不正です。 角括弧式 (bracket expression) は、`[]' で囲まれた文字のリストです。それ は、通常、リストのあらゆる単一の文字と照合します (が、以下を参照)。リスト が `^' で始まるなら、リストの残りの文字ででないあらゆる単一の文字と照合し ます (が、以下を参照)。リスト中の 2 つの文字が `-' によって分離されている なら、これは、照合順序のそれらの 2 つの間の文字 (両端を含む) の完全な範囲 のための省略形です、例えば、ASCII の `[0-9]' は、あらゆる 10 進数の数字に 一致します。2 つの範囲が終点を共有することは、不正 | です。例えば、`a-c e'。範囲は、照合のシーケンスに極めて大変依存していて、移植性のあるプログ ラムは、それらに依存することを避けるべきです。 をリストにリテラル `]' 含めるためには、(`^' に続く可能性がある) それを最 初の文字にします。リテラル `-' を含めるためには、それを最初、または最後の 文字にするか、または範囲の 2 番目の終点にします。範囲の最初の終点としてリ テラル `-' を使用するためには、それを照合要素にするために `[.' と `.]' で 囲みます (以下を参照)。`[' を使用しているこれらのといくつかの組み合わせを 除いて (次のパラグラフを参照)、`\' を含んで、すべての他の特殊文字は、角括 弧式内のそれらの特別な意味を失います。 角括弧式内で、照合要素 (文字、あたかも単一の文字、または照合シーケンス名 のいずれかのように、照合する複数文字シーケンス) は、照合要素の文字のシー ケンスを表す `[.' と `.]' で囲まれます。シーケンスは、角括弧式のリストの 単一の要素です。したがって、複数文字の照合要素を含んでいる角括弧式は、複 数の文字と一致することができます、例えば、照合シーケンスが `ch' 照合要素 を含むなら、RE `[[.ch.]]*c' は、`chchcc' の最初の 5 文字と一致します。 角括弧式内で、`[=' と `=]' で囲まれた照合要素は、それ自体を含んで、そのも のと等しいすべての照合要素の文字のシーケンスを表し、クラスと同等です。(他 の同等な照合要素がないなら、あたかも囲んでいるデリミタが `[.' と `.]' で あるかのように扱われます。) 例えば、`x' と `y' が、同等のクラスのメンバで あるなら、`[[=x=]]', `[[=y=]]', と `[xy]' は、すべて同義です。同等のクラ スは、範囲の終点ではありません|。 角括弧式内で、`[:' と `:]' で囲まれている文字クラスの名前は、そのクラスに 属しているすべての文字のリストを表します。標準の文字クラス名は、次の通り です: alnum digit punct alpha graph space blank lower upper cntrl print xdigit これらは、ctype(3) で定義された文字クラスを表します。ロケールは、他を提供 するかもしれません。文字クラスは、範囲の終点として使用されません。 文字クラスに属している単一の文字と照合するために `[[:class:]]' のような角 括弧式を使用することができます。逆に、特有のクラスに属していないあらゆる 文字と照合することは、角括弧式の否定の演算子を使用します: `[^[:class:]]'。 角括弧式の 2 つの特殊なケース|があります: 角括弧式 `[[:<:]]' と `[[:>:]]' は、それぞれ、単語の最初と終わりでヌル文字列と一致します。単語は、先行せ ず、単語文字が続かない、単語文字のシーケンスとして定義されます。単語文字 は、ctype(3)) によって定義されるような) alnum (アルファベットと数字) 文字 または下線です。これは、IEEE Std 1003.2 (``POSIX.2'') によって仕様化され ていませんが、互換性がある拡張であり、他のシステムへの移植性を意図するソ フトウェアで慎重に使用されるべきです。追加の単語デリミタ `\<' と `\>' は、従来の SVR4 システムとの互換性を緩和するために提供されますが、移植性 はなく、使用は、回避されるべきです。 結局、RE は、与えられた文字列の複数の部分文字列と一致しているかもしれず、 RE は、文字列の最初に始まるものと一致します。RE が、その時点で始まる複数 の部分文字列と一致しているかもしれないなら、それは、最も長いものに一致し ます。また、部分式 (subexpression) は、後で始まるものを越えて優先する RE で最初に開始する部分式がある、できるだけ長く全体に一致することを強制する ことを前提として、もっとも長い部分文字列に一致します。したがって、高レベ ルの部分式は、それらの低いレベルの構成要素の部分式を越えて優先することに 注意してください。 一致する長さは、照合要素ではなく、文字で測定されます。ヌル文字列は、全く 一致しないものより長いと見なされます。例えば、`bb*' は、`abbbc' の 3 つの 中間の文字に一致し、`(wee|week)(knights|nights)' は、`weeknights' の 10 個のすべての文字と一致し、`(.*).*' が `abc' に対して照合されるとき、括弧 で囲まれた部分式は、3 つのすべての文字に一致し、`(a*)*' が `bc' に対して 照合されるとき、全体の RE と括弧で囲まれた部分式の両方は、ヌル文字列に一 致します。 大文字と小文字を区別しない照合が指定されるなら、効果は、あたかもすべての 大文字小文字の区別がアルファベットから消えたかのように、多くあります。複 数の場合に存在するアルファベットが角括弧式の外側で通常の文字として現れる とき、両方の場合を含んでいる角括弧式に効果的に変換されます、例えば、`x' は、`[xX]' になります。(例えば) `[x]' は、`[xX]' となり、`[^x]' は、 `[^xX]' となるように、それが角括弧式の内側に現れるとき、すべての場合の対 応するものは、角括弧式に追加されます。 特定の制限は、RE|の長さに設けられません。移植性があることを目的とするプロ グラムは、実装が、そのような RE を受け付けることを拒否することができ、 POSIX 準拠であり続けるように、256 バイトより長い RE を採用するべきではあ りません。 時代遅れの (``basic'') (基本的な) 正規表現は、いくつかの点で異なっていま す。`|' は、通常の文字であり、その機能に同等のものはありません。`+' と `?' は、通常の文字であり、それらの機能は、繰り返し指定 (bound) を使用して 表現することができます (それぞれ、`{1,}' または `{0,1}')。また、現代の RE の `x+' は、`xx*' と同等であることに注意してください。繰り返し指定 (bound) のためのデリミタは、通常の文字それらだけで `{' と `}' を付けた `\{' と `\}' です。入れ子にされた部分式のための括弧は、通常の文字それらだ けで `(' と `)' を付けた `\(' と `\)' です。`^' は、RE の最初、または | 括弧で囲まれた部分式の最初を除いて、通常の文字であり、`$' は、RE の終わ り、または | 括弧で囲まれた部分式の終わりを除いて、通常の文字であり、そし て `*' は、RE の最初に現れるか、または (可能な先導する `^' の後の) 括弧で 囲まれた部分式の最初に現れるなら、通常の文字です。最後に、1 つのアトムの 新しいタイプ、後方参照があります: 0 でない 10 進数 d が続いている `\' は、(左から右にそれらの開き括弧の位置によって番号が付けられた) d 番目の括 弧で囲まれた部分式によって照合される文字の同じシーケンスと一致します、つ まりそれは、(例えば) `\([bc]\)\1' は、`bb' または `cc' に一致しますが、 `bc' には、一致しません。 関連項目 regex(3) Regular Expression Notation, IEEE Std, 1003.2, section 2.8. バグ 2 種類の RE があることは、台無しなことです。 現在の IEEE Std 1003.2 (``POSIX.2'') 仕様は、`)' が、対応しない `(' がな いことは、通常の文字であると記述しています。これは、言葉遣いのエラーの故 意でない結果であり、変更があり得ます。それに依存することを避けてくださ い。 後方参照は、ひどいへたな仕事であり、効率的な実装のために主要な問題を引き 起こします。また、それらは、いくらかあいまいに定義されています (`a\(\(b\)*\2\)*d' は、`abbbd' と一致するでしょうか?)。それらを使用するこ とを避けてください。 大文字と小文字を区別しない照合の IEEE Std 1003.2 (``POSIX.2'') 仕様は、あ いまいです。上記に与えられた ``one case implies all cases'' (1 つの場合 は、すべての場合を意味している) という定義は、ただしい解釈として実装者の 間の現在の合意です。 単語の境界のための構文は、信じられないほど醜くなっています。 FreeBSD 13.2 June 30, 2014 FreeBSD 13.2