OSDN Git Service

(split) LDP: Release pages for LDP v3.39.
[linuxjm/LDP_man-pages.git] / release / man7 / regex.7
index b86a6e0..621e0e0 100644 (file)
@@ -1,3 +1,5 @@
+.ie  t .ds dg \(dg
+.el .ds dg (!)
 .\" From Henry Spencer's regex package (as found in the apache
 .\" distribution). The package carries the following copyright:
 .\"
 .\" 2005-05-11 Removed discussion of `[[:<:]]' and `[[:>:]]', which
 .\"    appear not to be in the glibc implementation of regcomp
 .\"
-.ie t .ds dg \(dg
-.el .ds dg (!)
-.\"
-.\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved.
-.\" Translated Wed 8 Jul 1998 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
+.\"*******************************************************************
 .\"
-.\"WORD:       regular expression      正規表現
-.\"WORD:       modern RE               新しい正規表現
-.\"WORD:       obsolete RE             古い正規表現
-.\"WORD:       basic RE                基本正規表現
-.\"WORD:       extended RE             拡張正規表現
-.\"WORD:       branch                  枝
-.\"WORD:       piece                   文節
-.\"WORD:       atom                    アトム
-.\"WORD:       bound                   繰り返し指定
-.\"WORD:       bracket expression      ブラケット表現
-.\"WORD:       digit                   数字
-.\"WORD:       collating sequence      照合順序
-.\"WORD:       collating element       照合順序の要素
-.\"WORD:       character class         文字クラス
-.\"WORD:       equivalent class        等価クラス
-.\"WORD:       substring               部分文字列
-.\"WORD:       subexpression           部分正規表現
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.TH REGEX 7 2009-01-12 "" "Linux Programmer's Manual"
+.\"*******************************************************************
+.TH REGEX 7 2009\-01\-12 "" "Linux Programmer's Manual"
 .SH 名前
 regex \- POSIX.2 正規表現
 .SH 説明
-正規表現 (Regular expression: RE) は POSIX.2 で定義されており、
-二つの形式がある。新しい正規表現 (modern RE) と古い正規表現 (obsolete RE)
-である。新しい正規表現はだいたい
-.I egrep
-のものと同じで、 POSIX.2 では「拡張」正規表現 ("extended" RE)
-と呼ばれている。古い正規表現はだいたい
-.BR ed (1)
-のものと同じで、 POSIX.2 では「基本」正規表現 ("basic" RE) である。
-古い正規表現は、古いプログラムとの互換性を保つためのものである。
-これについては最後に議論する。
-POSIX.2 では、正規表現の文法や記号の一部が、未定義のまま残されている。
-"\*(dg" は、このような意味で、他の POSIX.2 の実装と
-完全には互換でないかも知れない部分である。
-.PP
-(新しい) 正規表現は一つ以上\*(dg の空白でない \fI枝 (branch)\fP からなる。
-枝どうしは \(aq|\(aq で区切られる。正規表現は、
-枝のどれかにマッチ (match) したものにマッチする。
-.PP
-枝は一つ以上の文節 (piece) が結合されたものである。
-枝は第一の文節がマッチし、
-続いて第二の文節がマッチし、... したものにマッチする。
-.PP
-文節は\fIアトム (atom)\fR からなる。ただしアトムの後には一つ\*(dg の \(aq*\(aq,
-\(aq+\(aq, \(aq?\(aq あるいは \fI繰り返し指定 (bound)\fR が続くこともある。
-\(aq*\(aq が後置されたアトムは、マッチしたアトムの 0 個以上の並びにマッチする。
-\(aq+\(aq が後置されたアトムは、マッチしたアトムの 1 個以上の並びにマッチする。
-\(aq?\(aq が後置されたアトムは、マッチしたアトムの 0 個または 1 個にマッチする。
-.PP
-\fI繰り返し指定\fRとは \(aq{\(aq に続いて、符号なし 10 進整数、\(aq,\(aq、
-もう一つの 10 進整数、\(aq}\(aq を並べたものである。\(aq,\(aq と二つめの
-10 進整数は省略できる。二つめの 10 進整数だけを省略することもできる
-(最後の `}' は省略できない)。
-整数は 0 以上
-.B RE_DUP_MAX
-(255\*(dg) 以下の間で指定できる。
-二つ指定する場合には、最初の数値は後の数値を越えてはならない。
-整数 \fIi\fR だけからなる繰り返し指定を後置されたアトムは、
-アトムをぴったりちょうど \fIi\fR 個だけ並べたものにマッチする。
-整数 \fIi\fR とコンマが指定された繰り返し指定を後置されたアトムは、
-アトムを \fIi\fR個以上並べたものにマッチする。
-整数 \fIi\fR と \fIj\fR が指定された繰り返し指定を後置されたアトムは、
-アトムを \fIi\fR個以上 \fIj\fR 個以下だけ並べたものにマッチする。
-.PP
-アトムの種類は以下の通り。"\fI()\fP" に囲まれた正規表現
-(その正規表現がマッチする文字列にマッチする)、
-中身が空の "\fI()\fP" (null 文字列にマッチする)\*(dg、
-\fIブラケット表現 (bracket expression\fR :後述)、
-\(aq.\(aq (任意の 1 文字にマッチする)、
-\(aq^\(aq (行頭の空白文字にマッチする)、
-\(aq$\(aq (行末の空白文字にマッチする)、
-\(aq\e\(aq に "\fI^.[$()|*+?{\e\fP" のいずれか一文字を後置したもの
-(通常の文字として扱われ、その文字にマッチする)、
-\(aq\e\(aq にそれ以外の文字を後置したもの\*(dg
-(\(aq\e\(aq がない場合と同じように、その文字にマッチする\*(dg)、
-特に意味を持たない文字一つ (その文字にマッチする)。
-\(aq{\(aq は数字以外の文字が後置されると通常の文字として扱われ、
-繰り返し指定の始まりとはされない\*(dg。\(aq\e\(aq
-で終わる正規表現は不正なものとみなされる。
-.PP
-\fIブラケット表現\fRは "\fI[]\fP" によって閉じられた文字のリストである。
-これは通常リスト中に存在している文字にマッチする。
-(例外あり、後述。) リストが \(aq^\(aq で始まると、
-\fIブラケット表現\fRはリストに存在して\fIいない\fR文字一つにマッチする
-(例外あり、後述)。 リスト中の二つの文字が \(aq\-\(aq で区切られている場合は、
-これは照合順序 (collating sequence) でその二つの文字に挟まれる、
-すべての文字の並びを短縮したものとみなされる (両端含む)。
-例えば "\fI[0\-9]\fP" は ASCII では 10 進の数字 (digit) のいずれかにマッチする。
-二つの領域指定が端点を共有してはならない\*(dg。
-つまり "\fIa-c-e\fP" のようなものは不正である。領域指定は照合順序に強く依存する。
-したがって移植性の高いプログラムを作る場合は、
-領域指定には頼らないほうが良いだろう。
-.PP
-【訳注: 照合順序 (collating sequence) というのは、国際化
-(Internationalization) に関連した用語です。アルファベット順に単語を並
-べる際には、言語によって並べる基準が異なります。照合順序は、その差異を
-吸収するための仕組みです。
-.PP
-例えば、スペイン語では ch という文字並びを特別扱いするため、アルファベッ
-ト順が a, b, c, ch, d, e, ... の順になるそうです。このようなシーケンス
-のことを collating sequence と言います。このとき `ch' という文字並びは、
-単語整列の際にあたかも「一文字」のように扱われます。ここで、
-順序付けを行う際に最小の単位となる、`a'、`b' の文字や
-`ch' のような特別な文字並びなど、照合順序の要素のことを
-collating element と言います。collating sequence は、文字単位ではなく
-collating element を単位として定義されます。】
-.PP
-文字 \(aq]\(aq そのものをリストに入れたい場合は、
-最初の文字として指定すれば良い (\(aq^\(aq) の後に続けるのでも良い)。
-文字 \(aq\-\(aq そのものをリストに入れたい場合は、
-最初か最後の文字とすれば良い。
-あるいは領域指定の終端文字として指定しても良い。
-\(aq\-\(aq を領域指定の先頭文字に指定するには、"\fI[.\fP" と "\fI.]\fP" で囲って、
-照合順序の要素 (collating element: 後述) にすれば良い。
-他の特殊文字 ( も含む) は、
-ブラケット表現の内部ではすべて通常の文字として扱われる。
-.PP
-ブラケット表現の内部では、"\fI[.\fP" と "\fI.]\fP" に囲われた照合順序の要素は、
-その要素に対応する文字並びを表す。
-「照合順序の要素」とは、
-[1] 文字、 [2] 単一文字のように扱われる複数文字のシーケンス、
-[3] 1, 2 いずれかに対応する照合順序上の名前、のいずれかである。
-この繰り返しは、ブラケット表現のリストにおける単一の要素となる。
-上記 [2] の、「複数文字からなる照合順序要素」を含むブラケット表現は、
-したがって一文字以上にマッチすることがある。
-例えば、もし照合順序が "ch" という要素を含んでいる場合には、
-正規表現 "\fI[[.ch.]]*c\fP" は "chchcc" の最初の 5 文字にマッチする。
-.PP
-ブラケット表現の内部では、"\fI[=\fP" と "\fI=]\fP" に囲まれた照合順序の要素は、
-等価クラス (equivalence class) となる。
-これは、その要素と等価な要素すべてからなる文字シーケンス (自身も含む) を表す。
-他に等価な要素がなければ、
-取り扱いは "\fI[.\fP" と "\fI.]\fP" で囲まれている場合と同じである。
-例えば o と ou が等価クラスのメンバーであれば、
-"\fI[[=o=]]\fP", "\fI[[=\o'o^'=]]\fP", "\fI[o\o'o^']\fP" はすべて同じ意味になる。
-等価クラスは領域指定の端点にはなれない\*(dg。
-.\" nippon 端末では \o'o^' が正しく出ないので、例示を変更しました。
-.PP
-ブラケット表現の内部では、"\fI[:\fP" と "\fI:]\fP" で囲われた\fI文字クラス
-(character class)\fR はそのクラスに属するすべての文字のリストを表す。
-標準で用意されている文字クラスの名前は以下の通り:
+正規表現 (Regular expression: RE) は POSIX.2 で定義されており、 二つの形式がある。新しい正規表現 (modern
+RE) と古い正規表現 (obsolete RE)  である。新しい正規表現はだいたい \fIegrep\fP のものと同じで、 POSIX.2
+では「拡張」正規表現 ("extended" RE)  と呼ばれている。古い正規表現はだいたい \fBed\fP(1)  のものと同じで、 POSIX.2
+では「基本」正規表現 ("basic" RE) である。 古い正規表現は、古いプログラムとの互換性を保つためのものである。
+これについては最後に議論する。 POSIX.2 では、正規表現の文法や記号の一部が、未定義のまま残されている。 "\*(dg"
+は、このような意味で、他の POSIX.2 の実装と 完全には互換でないかも知れない部分である。
+.PP
+(新しい) 正規表現は一つ以上\*(dg の空白でない \fI枝 (branch)\fP からなる。 枝どうしは \(aq|\(aq
+で区切られる。正規表現は、 枝のどれかにマッチ (match) したものにマッチする。
+.PP
+枝は一つ以上の文節 (piece) が結合されたものである。 枝は第一の文節がマッチし、 続いて第二の文節がマッチし、... したものにマッチする。
+.PP
+文節は\fIアトム (atom)\fP からなる。ただしアトムの後には一つ\*(dg の \(aq*\(aq, \(aq+\(aq, \(aq?\(aq
+あるいは \fI繰り返し指定 (bound)\fP が続くこともある。 \(aq*\(aq が後置されたアトムは、マッチしたアトムの 0
+個以上の並びにマッチする。 \(aq+\(aq が後置されたアトムは、マッチしたアトムの 1 個以上の並びにマッチする。 \(aq?\(aq
+が後置されたアトムは、マッチしたアトムの 0 個または 1 個にマッチする。
+.PP
+\fI繰り返し指定\fPとは \(aq{\(aq に続いて、符号なし 10 進整数、\(aq,\(aq、 もう一つの 10 進整数、\(aq}\(aq
+を並べたものである。\(aq,\(aq と二つめの 10 進整数は省略できる。二つめの 10 進整数だけを省略することもできる (最後の `}'
+は省略できない)。 整数は 0 以上 \fBRE_DUP_MAX\fP (255\*(dg) 以下の間で指定できる。
+二つ指定する場合には、最初の数値は後の数値を越えてはならない。 整数 \fIi\fP だけからなる繰り返し指定を後置されたアトムは、 アトムをぴったりちょうど
+\fIi\fP 個だけ並べたものにマッチする。 整数 \fIi\fP とコンマが指定された繰り返し指定を後置されたアトムは、 アトムを
+\fIi\fP個以上並べたものにマッチする。 整数 \fIi\fP と \fIj\fP が指定された繰り返し指定を後置されたアトムは、 アトムを \fIi\fP個以上 \fIj\fP
+個以下だけ並べたものにマッチする。
+.PP
+アトムの種類は以下の通り。"\fI()\fP" に囲まれた正規表現 (その正規表現がマッチする文字列にマッチする)、 中身が空の "\fI()\fP" (null
+文字列にマッチする)\*(dg、 \fIブラケット表現 (bracket expression\fP :後述)、 \(aq.\(aq (任意の 1
+文字にマッチする)、 \(aq^\(aq (行頭の空白文字にマッチする)、 \(aq$\(aq (行末の空白文字にマッチする)、 \(aq\e\(aq
+に "\fI^.[$()|*+?{\e\fP" のいずれか一文字を後置したもの (通常の文字として扱われ、その文字にマッチする)、 \(aq\e\(aq
+にそれ以外の文字を後置したもの\*(dg (\(aq\e\(aq がない場合と同じように、その文字にマッチする\*(dg)、 特に意味を持たない文字一つ
+(その文字にマッチする)。 \(aq{\(aq は数字以外の文字が後置されると通常の文字として扱われ、
+繰り返し指定の始まりとはされない\*(dg。\(aq\e\(aq で終わる正規表現は不正なものとみなされる。
+.PP
+\fIブラケット表現\fPは "\fI[]\fP" によって閉じられた文字のリストである。 これは通常リスト中に存在している文字にマッチする。 (例外あり、後述。)
+リストが \(aq^\(aq で始まると、 \fIブラケット表現\fPはリストに存在して\fIいない\fP文字一つにマッチする (例外あり、後述)。
+リスト中の二つの文字が \(aq\-\(aq で区切られている場合は、 これは照合順序 (collating sequence)
+でその二つの文字に挟まれる、 すべての文字の並びを短縮したものとみなされる (両端含む)。 例えば "\fI[0\-9]\fP" は ASCII では 10
+進の数字 (digit) のいずれかにマッチする。 二つの領域指定が端点を共有してはならない\*(dg。 つまり "\fIa\-c\-e\fP"
+のようなものは不正である。領域指定は照合順序に強く依存する。 したがって移植性の高いプログラムを作る場合は、 領域指定には頼らないほうが良いだろう。
+【\fB訳注\fP: 照合順序 (collating sequence) というのは、国際化 (Internationalization)
+に関連した用語です。アルファベット順に単語を並 べる際には、言語によって並べる基準が異なります。照合順序は、その差異を 吸収するための仕組みです。
+例えば、スペイン語では ch という文字並びを特別扱いするため、アルファベッ ト順が a, b, c, ch, d, e,
+\&... の順になるそうです。このようなシーケンス のことを collating sequence と言います。このとき `ch' という文字並びは、
+単語整列の際にあたかも「一文字」のように扱われます。ここで、 順序付けを行う際に最小の単位となる、`a'、`b' の文字や `ch'
+のような特別な文字並びなど、照合順序の要素のことを collating element と言います。collating sequence
+は、文字単位ではなく collating element を単位として定義されます。】
+.PP
+文字 \(aq]\(aq そのものをリストに入れたい場合は、 最初の文字として指定すれば良い (\(aq^\(aq) の後に続けるのでも良い)。 文字
+\(aq\-\(aq そのものをリストに入れたい場合は、 最初か最後の文字とすれば良い。 あるいは領域指定の終端文字として指定しても良い。
+\(aq\-\(aq を領域指定の先頭文字に指定するには、"\fI[.\fP" と "\fI.]\fP" で囲って、 照合順序の要素 (collating
+element: 後述) にすれば良い。 他の特殊文字 ( も含む) は、 ブラケット表現の内部ではすべて通常の文字として扱われる。
+.PP
+ブラケット表現の内部では、"\fI[.\fP" と "\fI.]\fP" に囲われた照合順序の要素は、 その要素に対応する文字並びを表す。 「照合順序の要素」とは、
+[1] 文字、 [2] 単一文字のように扱われる複数文字のシーケンス、 [3] 1, 2 いずれかに対応する照合順序上の名前、のいずれかである。
+この繰り返しは、ブラケット表現のリストにおける単一の要素となる。 上記 [2] の、「複数文字からなる照合順序要素」を含むブラケット表現は、
+したがって一文字以上にマッチすることがある。 例えば、もし照合順序が "ch" という要素を含んでいる場合には、 正規表現
+"\fI[[.ch.]]*c\fP" は "chchcc" の最初の 5 文字にマッチする。
+.PP
+ブラケット表現の内部では、"\fI[=\fP" と "\fI=]\fP" に囲まれた照合順序の要素は、 等価クラス (equivalence class) となる。
+これは、その要素と等価な要素すべてからなる文字シーケンス (自身も含む) を表す。 他に等価な要素がなければ、 取り扱いは "\fI[.\fP" と
+"\fI.]\fP" で囲まれている場合と同じである。 例えば o と ou が等価クラスのメンバーであれば、 "\fI[[=o=]]\fP",
+"\fI[[=\o'o^'=]]\fP", "\fI[o\o'o^']\fP" はすべて同じ意味になる。 等価クラスは領域指定の端点にはなれない\*(dg。
+.PP
+ブラケット表現の内部では、"\fI[:\fP" と "\fI:]\fP" で囲われた\fI文字クラス (character class)\fP
+はそのクラスに属するすべての文字のリストを表す。 標準で用意されている文字クラスの名前は以下の通り:
 .PP
 .RS
 .nf
@@ -189,118 +117,81 @@ cntrl    print   xdigit
 .fi
 .RE
 .PP
-これらは
-.BR wctype (3)
-で定義されている文字クラスを表している。ロケール (locale) によって、
-これら以外のクラスが定義されることもある。
-文字クラスは領域指定の端点にはなれない。
+.\" As per http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=295666
+.\" The following does not seem to apply in the glibc implementation
 .\" .PP
-.\" http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=295666 にあるように
-.\" 以下の記載は glibc の実装にはあてはまらないようである。
-.\" ブラケット表現には、特殊な意味を持つものが二つ存在する\*(dg。
-.\" ブラケット表現 "\fI[[:<:]]\fP" はワード (word) 先頭のヌル文字列に、
-.\" "\fI[[:>:]]\fP" はワード末尾のヌル文字列にそれぞれマッチする。
-.\" ワードとはワード文字の並びであり、
-.\" ワード文字が前置も後置もされていないものである。
-.\" ワード文字は
+.\" There are two special cases\*(dg of bracket expressions:
+.\" the bracket expressions "\fI[[:<:]]\fP" and "\fI[[:>:]]\fP" match
+.\" the null string at the beginning and end of a word respectively.
+.\" A word is defined as a sequence of
+.\" word characters
+.\" which is neither preceded nor followed by
+.\" word characters.
+.\" A word character is an
 .\" .I alnum
-.\" 文字
-.\" .RB ( wctype (3)
-.\" で定義されている) およびアンダースコア `_' である。
-.\" これは拡張記法であり、POSIX.2 に反してはいないが、
-.\" 定義もされていない。
-.\" 他のシステムと互換性を確保したいソフトウェアでは、
-.\" 注意して用いるようにすること。
-.PP
-正規表現が、与えられた文字列の複数の部分文字列
-(substring) にマッチできるような場合には、
-最も先頭の近くから始まるものにマッチする。
-その位置から始まり、正規表現がマッチできる部分文字列が複数ある場合には、
-最長のものにマッチする。
-部分正規表現 (subexpression) も最も長い部分文字列にマッチする。
-ただし、全体のマッチが最長であるように、という条件が優先される。
-正規表現の中で先に現れる部分正規表現は、後に現れるものより優先される。
-ただし、より高位の部分正規表現は、
+.\" character (as defined by
+.\" .BR wctype (3))
+.\" or an underscore.
+.\" This is an extension,
+.\" compatible with but not specified by POSIX.2,
+.\" and should be used with
+.\" caution in software intended to be portable to other systems.
+これらは \fBwctype\fP(3)  で定義されている文字クラスを表している。ロケール (locale) によって、
+これら以外のクラスが定義されることもある。 文字クラスは領域指定の端点にはなれない。
+.PP
+正規表現が、与えられた文字列の複数の部分文字列 (substring) にマッチできるような場合には、 最も先頭の近くから始まるものにマッチする。
+その位置から始まり、正規表現がマッチできる部分文字列が複数ある場合には、 最長のものにマッチする。 部分正規表現 (subexpression)
+も最も長い部分文字列にマッチする。 ただし、全体のマッチが最長であるように、という条件が優先される。
+正規表現の中で先に現れる部分正規表現は、後に現れるものより優先される。 ただし、より高位の部分正規表現は、
 それを構成する低位の部分正規表現よりも優先されることに注意すること。
 .PP
-マッチ長は照合順序の要素ではなく、文字数を単位としてカウントされる。
-null 文字列は、全くマッチしなかった場合よりも長いとみなされる。
-例えば "\fIbb*\fP" は "abbbc" のまん中の 3 文字にマッチする。
-"\fI(wee|week)(knights|nights)\fP" は "weeknights" の全体にマッチする。
-"\fI(.*).*\fP" を "abc" にマッチさせると、
-括弧の内部の部分正規表現が 3 文字すべてにマッチする。
-"\fI(a*)*\fP" を "bc" にマッチさせると、正規表現全体も、
-括弧で括られた部分正規表現も null 文字列にマッチする。
+マッチ長は照合順序の要素ではなく、文字数を単位としてカウントされる。 null 文字列は、全くマッチしなかった場合よりも長いとみなされる。 例えば
+"\fIbb*\fP" は "abbbc" のまん中の 3 文字にマッチする。 "\fI(wee|week)(knights|nights)\fP" は
+"weeknights" の全体にマッチする。 "\fI(.*).*\fP" を "abc" にマッチさせると、 括弧の内部の部分正規表現が 3
+文字すべてにマッチする。 "\fI(a*)*\fP" を "bc" にマッチさせると、正規表現全体も、 括弧で括られた部分正規表現も null
+文字列にマッチする。
 .PP
-マッチが大文字・小文字を無視するように指定されると、
-アルファベット全体から大小文字の区別が無くなったかのような効果となる。
-大文字・小文字を持つアルファベットがブラケット表現の外部で
-通常の文字として現れると、
-これは実効的に大小両方の文字のブラケット表現のように変換される。
+マッチが大文字・小文字を無視するように指定されると、 アルファベット全体から大小文字の区別が無くなったかのような効果となる。
+大文字・小文字を持つアルファベットがブラケット表現の外部で 通常の文字として現れると、 これは実効的に大小両方の文字のブラケット表現のように変換される。
 すなわち \(aqx\(aq は "\fI[xX]\fP" となる。ブラケット表現の内部に現れると、
-大文字なら小文字が、小文字なら大文字がそのブラケット表現に加えられる。
-すなわち
-"\fI[x]\fP" は "\fI[xX]\fP" に、"\fI[^x]\fP" は "\fI[^xX]\fP" になる。
-.PP
-正規表現の長さには特に制限はない\*(dg。
-ただし移植性を高くしたいプログラムでは、
-256 バイトより長い正規表現は実行しないようにするほうが良い。
-なぜなら、そのような正規表現を拒否し、
-しかも POSIX 互換を保つような実装が可能だからである。
-.PP
-古い ("基本") 正規表現は、いくつかの点において異なる。
-\(aq|\(aq, \(aq+\(aq, and \(aq?\(aq は通常の文字となる。
-対応する機能は存在しない。繰り返し指定の区切りは
-"\fI\e{\fP" および "\fI\e}\fP" となる。\(aq{\(aq と \(aq}\(aq は、
-単独では通常の文字として扱われる。
-部分正規表現をネストする括弧は "\fI\e(\fP" および "\fI\e)\fP" となり、
-\(aq(\(aq と \(aq)\(aq は単独では通常の文字となる。
-\(aq^\(aq は正規表現の先頭か、
-括弧でくくられた部分表現の先頭\*(dgを除いて通常の文字となる。
-\(aq$\(aq は正規表現の末尾か、
-括弧でくくられた部分正規表現の末尾\*(dgを除いて通常の文字となる。
-\(aq*\(aq は、正規表現の先頭か、
-括弧でくくられた部分文字列の先頭に置かれた場合は通常の文字となる
-(\(aq^\(aq) が前置されていてもよい)。
-.PP
-最後に、アトムとして別のタイプが存在する。
-\fI後方参照 (back reference)\fR である。
-\(aq\e\(aq の後に 0 でない 10 進数値文字 \fId\fR が続くと、
-括弧でくくられた部分正規表現の
-\fId\fR 番目にマッチした文字並びと同じものにマッチする。
-(部分正規表現の番号付けは、
-開き括弧 `(' の位置が左のものから右のものへ向かってなされる。)
-したがって "\fI\e([bc]\e)\e1\fP" は
-"bb" または "cc" にはマッチするが、"bc" にはマッチしない。
+大文字なら小文字が、小文字なら大文字がそのブラケット表現に加えられる。 すなわち "\fI[x]\fP" は "\fI[xX]\fP" に、"\fI[^x]\fP" は
+"\fI[^xX]\fP" になる。
+.PP
+正規表現の長さには特に制限はない\*(dg。 ただし移植性を高くしたいプログラムでは、 256 バイトより長い正規表現は実行しないようにするほうが良い。
+なぜなら、そのような正規表現を拒否し、 しかも POSIX 互換を保つような実装が可能だからである。
+.PP
+古い ("基本") 正規表現は、いくつかの点において異なる。 \(aq|\(aq, \(aq+\(aq, and \(aq?\(aq
+は通常の文字となる。 対応する機能は存在しない。繰り返し指定の区切りは "\fI\e{\fP" および "\fI\e}\fP" となる。\(aq{\(aq と
+\(aq}\(aq は、 単独では通常の文字として扱われる。 部分正規表現をネストする括弧は "\fI\e(\fP" および "\fI\e)\fP" となり、
+\(aq(\(aq と \(aq)\(aq は単独では通常の文字となる。 \(aq^\(aq は正規表現の先頭か、
+括弧でくくられた部分表現の先頭\*(dgを除いて通常の文字となる。 \(aq$\(aq は正規表現の末尾か、
+括弧でくくられた部分正規表現の末尾\*(dgを除いて通常の文字となる。 \(aq*\(aq は、正規表現の先頭か、
+括弧でくくられた部分文字列の先頭に置かれた場合は通常の文字となる (\(aq^\(aq) が前置されていてもよい)。
+.PP
+最後に、アトムとして別のタイプが存在する。 \fI後方参照 (back reference)\fP である。 \(aq\e\(aq の後に 0 でない 10
+進数値文字 \fId\fP が続くと、 括弧でくくられた部分正規表現の \fId\fP 番目にマッチした文字並びと同じものにマッチする。
+(部分正規表現の番号付けは、 開き括弧 `(' の位置が左のものから右のものへ向かってなされる。)  したがって "\fI\e([bc]\e)\e1\fP"
+は "bb" または "cc" にはマッチするが、"bc" にはマッチしない。
 .SH バグ
 正規表現が 2 種類あるのは格好悪い。
 .PP
-現在の POSIX.2 規格においては、\(aq)\(aq は、
-対応する \(aq(\(aq がない場合には通常の文字として扱われることになっている。
-しかしこれは、本来の意図とは異なる記述上のエラーであり、
-修正される可能性が高い。これに依存したコードは使わないこと。
+現在の POSIX.2 規格においては、\(aq)\(aq は、 対応する \(aq(\(aq がない場合には通常の文字として扱われることになっている。
+しかしこれは、本来の意図とは異なる記述上のエラーであり、 修正される可能性が高い。これに依存したコードは使わないこと。
 .PP
-後方参照はひどく出来の悪い代物である。
-効率の良い実装をするのはとても難しい。
-また定義があいまいである。
-("\fIa\e(\e(b\e)*\e2\e)*d\fP" は "abbbd" にマッチすると思うか?)
-使わないほうが良い。
+後方参照はひどく出来の悪い代物である。 効率の良い実装をするのはとても難しい。 また定義があいまいである。
+("\fIa\e(\e(b\e)*\e2\e)*d\fP" は "abbbd" にマッチすると思うか?)  使わないほうが良い。
 .PP
-POSIX.2 の規格では、case (大文字か小文字か)
-に依存しないマッチの記述があいまいである。
-現在のところでは「一つの case がすべての case を意味する」
-という上記の定義が正しい解釈であるというのが、
-実装者の間での共通認識のようである。
 .\" As per http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=295666
 .\" The following does not seem to apply in the glibc implementation
 .\" .PP
-.\" ワード境界に関する文法定義が非常に醜い。
+.\" The syntax for word boundaries is incredibly ugly.
+POSIX.2 の規格では、case (大文字か小文字か)  に依存しないマッチの記述があいまいである。 現在のところでは「一つの case がすべての
+case を意味する」 という上記の定義が正しい解釈であるというのが、 実装者の間での共通認識のようである。
 .SH 著者
 .\" Sigh... The page license means we must have the author's name
 .\" in the formatted output.
 このページは Henry Spencer の regex パッケージから採録したものである。
 .SH 関連項目
-.BR grep (1),
-.BR regex (3)
+\fBgrep\fP(1), \fBregex\fP(3)
 .PP
 POSIX.2, section 2.8 (Regular Expression Notation).