diff options
author | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2017-07-23 10:18:42 +0200 |
---|---|---|
committer | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2017-07-23 10:18:42 +0200 |
commit | 995dfd20e78ad16cec678df25422ce032650e3aa (patch) | |
tree | f4c5abd77f4edce4a752311c7fc5b837fcb07fe2 /doc/RE.ja | |
parent | 9c10d3a428f2e33d01e1ea66932d272ac731787f (diff) |
New upstream version 6.4.0upstream/6.4.0
Diffstat (limited to 'doc/RE.ja')
-rw-r--r-- | doc/RE.ja | 482 |
1 files changed, 244 insertions, 238 deletions
@@ -1,74 +1,74 @@ - ɽ Version 6.3.0 2017/05/19 +鬼車 正規表現 Version 6.4.0 2017/06/28 -ʸˡ: ONIG_SYNTAX_RUBY () +使用文法: ONIG_SYNTAX_RUBY (既定値) -1. +1. 基本要素 - \ () ɽͭ/̵ - | - (...) (롼) - [...] ʸ (ʸ饹) + \ 退避修飾 (エスケープ) 正規表現記号の有効/無効の制御 + | 選択子 + (...) 式集合 (グループ) + [...] 文字集合 (文字クラス) -2. ʸ +2. 文字 - \t ʿ (0x09) - \v ľ (0x0B) - \n (0x0A) - \r (0x0D) - \b (0x08) - \f (0x0C) - \a (0x07) - \e (0x1B) - \nnn Ȭʿɽ 沽Х(ΰ) - \o{17777777777} ĥȬʿɽ ɥݥ - \xHH ϻʿɽ 沽Х(ΰ) - \x{7HHHHHHH} ĥϻʿɽ ɥݥ - \cx ʸɽ ɥݥ - \C-x ʸɽ ɥݥ - \M-x Ķ (x|0x80) ɥݥ - \M-\C-x Ķ + ʸɽ ɥݥ + \t 水平タブ (0x09) + \v 垂直タブ (0x0B) + \n 改行 (0x0A) + \r 復帰 (0x0D) + \b 後退空白 (0x08) + \f 改頁 (0x0C) + \a 鐘 (0x07) + \e 退避修飾 (0x1B) + \nnn 八進数表現 符号化バイト値(の一部) + \o{17777777777} 拡張八進数表現 コードポイント値 + \xHH 十六進数表現 符号化バイト値(の一部) + \x{7HHHHHHH} 拡張十六進数表現 コードポイント値 + \cx 制御文字表現 コードポイント値 + \C-x 制御文字表現 コードポイント値 + \M-x 超 (x|0x80) コードポイント値 + \M-\C-x 超 + 制御文字表現 コードポイント値 - \bϡʸǤΤͭ + ※ \bは、文字集合内でのみ有効 -3. ʸ +3. 文字種 - . Ǥʸ (Ԥ) + . 任意文字 (改行を除く) - \w ñ칽ʸ + \w 単語構成文字 - Unicodeʳξ: - ѿ, "_" ¿Хʸ + Unicode以外の場合: + 英数字, "_" および 多バイト文字。 - Unicodeξ: + Unicodeの場合: General_Category -- (Letter|Mark|Number|Connector_Punctuation) - \W ñ칽ʸ + \W 非単語構成文字 - \s ʸ + \s 空白文字 - Unicodeʳξ: + Unicode以外の場合: \t, \n, \v, \f, \r, \x20 - Unicodeξ: + Unicodeの場合: 0009, 000A, 000B, 000C, 000D, 0085(NEL), General_Category -- Line_Separator -- Paragraph_Separator -- Space_Separator - \S ʸ + \S 非空白文字 - \d 10ʿ + \d 10進数字 - Unicodeξ: General_Category -- Decimal_Number + Unicodeの場合: General_Category -- Decimal_Number - \D 10ʿ + \D 非10進数字 - \h 16ʿ [0-9a-fA-F] + \h 16進数字 [0-9a-fA-F] - \H 16ʿ + \H 非16進数字 Character Property @@ -79,95 +79,95 @@ property-name: - + ƤΥǥͭ + + 全てのエンコーディングで有効 Alnum, Alpha, Blank, Cntrl, Digit, Graph, Lower, Print, Punct, Space, Upper, XDigit, Word, ASCII, - + EUC-JP, Shift_JISͭ + + EUC-JP, Shift_JISで有効 Hiragana, Katakana - + UTF8, UTF16, UTF32ͭ - doc/UNICODE_PROPERTIES + + UTF8, UTF16, UTF32で有効 + doc/UNICODE_PROPERTIES参照 -4. ̻ +4. 量指定子 - ĥ + 欲張り - ? ޤ - * ʾ - + ʾ - {n,m} nʾmʲ - {n,} nʾ - {,n} ʾnʲ ({0,n}) - {n} n + ? 一回または零回 + * 零回以上 + + 一回以上 + {n,m} n回以上m回以下 + {n,} n回以上 + {,n} 零回以上n回以下 ({0,n}) + {n} n回 - ̵ + 無欲 - ?? ޤ - *? ʾ - +? ʾ - {n,m}? nʾmʲ - {n,}? nʾ - {,n}? ʾnʲ (== {0,n}?) + ?? 一回または零回 + *? 零回以上 + +? 一回以上 + {n,m}? n回以上m回以下 + {n,}? n回以上 + {,n}? 零回以上n回以下 (== {0,n}?) - (ĥǡ֤ϲ餹褦ʸƻԤʤ) + 強欲 (欲張りで、繰り返しに成功した後は回数を減らすような後退再試行をしない) - ?+ ޤ - *+ ʾ - ++ ʾ + ?+ 一回または零回 + *+ 零回以上 + ++ 一回以上 - ({n,m}+, {n,}+, {n}+ ϡONIG_SYNTAX_JAVAǤΤ߶ߤʻ) + ({n,m}+, {n,}+, {n}+ は、ONIG_SYNTAX_JAVAでのみ強欲な指定子) - . /a*+/ === /(?>a*)/ + 例. /a*+/ === /(?>a*)/ -5. +5. 錨 - ^ Ƭ - $ - \b ñ춭 - \B ñ춭 - \A ʸƬ - \Z ʸޤʸβԤľ - \z ʸ - \G ȹ糫ϰ + ^ 行頭 + $ 行末 + \b 単語境界 + \B 非単語境界 + \A 文字列先頭 + \Z 文字列末尾、または文字列末尾の改行の直前 + \z 文字列末尾 + \G 照合開始位置 -6. ʸ +6. 文字集合 - ^... (ͥٱ黻) - x-y ϰ (xyޤ) - [...] (ʸʸ) - ..&&.. ѱ黻 (^μͥ٤㤤黻) + ^... 否定 (最低優先度演算子) + x-y 範囲 (xからyまで) + [...] 集合 (文字集合内文字集合) + ..&&.. 積演算 (^の次に優先度が低い演算子) - . [a-w&&[^c-g]z] ==> ([a-w] and ([^c-g] or z)) ==> [abh-w] + 例. [a-w&&[^c-g]z] ==> ([a-w] and ([^c-g] or z)) ==> [abh-w] - '[', '-', ']'ʸ̾ʸΰ̣ǻѤˤϡ - ʸ'\'ʤФʤʤ + ※ '[', '-', ']'を、文字集合内で通常文字の意味で使用したい場合には、 + これらの文字を'\'で退避修飾しなければならない。 - POSIX֥饱å ([:xxxxx:], [:^xxxxx:]) + POSIXブラケット ([:xxxxx:], 否定 [:^xxxxx:]) - Unicodeʳξ: + Unicode以外の場合: - alnum ѿ - alpha ѻ + alnum 英数字 + alpha 英字 ascii 0 - 127 blank \t, \x20 cntrl digit 0-9 - graph ¿Хʸޤ + graph 多バイト文字全部を含む lower - print ¿Хʸޤ + print 多バイト文字全部を含む punct space \t, \n, \v, \f, \r, \x20 upper xdigit 0-9, a-f, A-F - word ѿ, "_" ¿Хʸ + word 英数字, "_" および 多バイト文字 - Unicodeξ: + Unicodeの場合: alnum Letter | Mark | Decimal_Number alpha Letter | Mark @@ -190,67 +190,69 @@ -7. ĥ +7. 拡張式集合 - (?#...) - (?imx-imx) Ωץ - i: ʸʸȹ - m: ʣ - x: ĥ - (?imx-imx:) ץ + (?#...) 注釈 + (?imx-imx) 孤立オプション + i: 大文字小文字照合 + m: 複数行 + x: 拡張形式 + (?imx-imx:式) 式オプション - () ͼ - (?:) ͼ + (式) 捕獲式集合 + (?:式) 非捕獲式集合 - (?=) ɤ - (?!) ɤ - (?<=) ɤ - (?<!) ɤ + (?=式) 先読み + (?!式) 否定先読み + (?<=式) 戻り読み + (?<!式) 否定戻り読み - ɤߤμϸʸĹǤʤФʤʤ - Ǿ̤ҤϰۤʤäʸĹ롣 - . (?<=a|bc) ϵ. (?<=aaa(?:b|cd)) Ե + 戻り読みの式は固定文字長でなければならない。 + しかし、最上位の選択子だけは異なった文字長が許される。 + 例. (?<=a|bc) は許可. (?<=aaa(?:b|cd)) は不許可 - ɤߤǤϡͼϵʤ - ͼϵ롣 + 否定戻り読みでは、捕獲式集合は許されないが、 + 非捕獲式集合は許される。 - (?>) Ū - Τ̲ᤷȤǤθƻԤԤʤʤ + (?>式) 原子的式集合 + 式全体を通過したとき、式の中での後退再試行を行なわない - (?<name>), (?'name') - ̾դͼ - ̾Ƥ() - (̾ñ칽ʸǤʤФʤʤ) + (?<name>式), (?'name'式) + 名前付き捕獲式集合 + 式集合に名前を割り当てる(定義する)。 + (名前は単語構成文字でなければならない。) - ̾ǤʤͼƱֹͤƤ롣 - ֹ꤬ػߤƤʤ (10. ͼ ) - ΤȤϡ̾ȤʤֹǤ⻲ȤǤ롣 + 名前だけでなく、捕獲式集合と同様に番号も割り当てられる。 + 番号指定が禁止されていない状態 (10. 捕獲式集合 を参照) + のときは、名前を使わないで番号でも参照できる。 - ʣμƱ̾Ϳ뤳ȤϵƤ롣 - ξˤϡ̾ѤȤϲǽǤ뤬 - ʬƽФϤǤʤ + 複数の式集合に同じ名前を与えることは許されている。 + この場合には、この名前を使用した後方参照は可能であるが、 + 部分式呼出しはできない。 -8. +8. 後方参照 - \n ֹ껲 (n >= 1) - \k<n> ֹ껲 (n >= 1) - \k'n' ֹ껲 (n >= 1) - \k<-n> ֹ껲 (n >= 1) - \k'-n' ֹ껲 (n >= 1) - \k<name> ̾껲 - \k'name' ̾껲 + \n 番号指定参照 (n >= 1) + \k<n> 番号指定参照 (n >= 1) + \k'n' 番号指定参照 (n >= 1) + \k<-n> 相対番号指定参照 (n >= 1) + \k'-n' 相対番号指定参照 (n >= 1) + \k<+n> 相対番号指定参照 (n >= 1) + \k'+n' 相対番号指定参照 (n >= 1) + \k<name> 名前指定参照 + \k'name' 名前指定参照 - ̾껲Ȥǡ̾ʣμ¿Ƥˤϡ - ֹ礭礫ͥŪ˻Ȥ롣 - (ޥåʤȤˤֹξ礬Ȥ) + 名前指定参照で、その名前が複数の式集合で多重定義されている場合には、 + 番号の大きい式集合から優先的に参照される。 + (マッチしないときには番号の小さい式集合が参照される) - ֹ껲Ȥϡ̾դͼ礬졢 - ONIG_OPTION_CAPTURE_GROUPꤵƤʤˤϡ - ػߤ롣(10. ͼ ) + ※ 番号指定参照は、名前付き捕獲式集合が定義され、 + かつ ONIG_OPTION_CAPTURE_GROUPが指定されていない場合には、 + 禁止される。(10. 捕獲式集合 を参照) - ͥȥ٥դ + ネストレベル付き後方参照 level: 0, 1, 2, ... @@ -264,14 +266,14 @@ \k'name+level' \k'name-level' - Ȥΰ֤ŪʬƽФͥȥ٥ꤷơΥ٥Ǥ - ͤȤ롣 + 後方参照の位置から相対的な部分式呼出しネストレベルを指定して、そのレベルでの + 捕獲値を参照する。 - -1. + 例-1. /\A(?<a>|.|(?:(?<b>.)\g<a>\k<b+0>))\z/.match("reer") - -2. + 例-2. r = Regexp.compile(<<'__REGEXP__'.strip, Regexp::EXTENDED) (?<element> \g<stag> \g<content>* \g<etag> ){0} @@ -286,82 +288,86 @@ -9. ʬƽФ ("ůڥ") +9. 部分式呼出し ("田中哲スペシャル") - \g<name> ̾ƽФ - \g'name' ̾ƽФ - \g<n> ֹƽФ (n >= 1) - \g'n' ֹƽФ (n >= 1) - \g<-n> ֹƽФ (n >= 1) - \g'-n' ֹƽФ (n >= 1) + \g<name> 名前指定呼出し + \g'name' 名前指定呼出し + \g<n> 番号指定呼出し (n >= 1) + \g'n' 番号指定呼出し (n >= 1) + \g<0> 番号指定呼出し(全体呼び出し) + \g'0' 番号指定呼出し(全体呼び出し) + \g<-n> 相対番号指定呼出し (n >= 1) + \g'-n' 相対番号指定呼出し (n >= 1) + \g<+n> 相対番号指定呼出し (n >= 1) + \g'+n' 相対番号指定呼出し (n >= 1) - Ǻ֤ǤκƵƽФ϶ػߤ롣 - . (?<name>a|\g<name>b) => error + ※ 最左位置での再帰呼出しは禁止される。 + 例. (?<name>a|\g<name>b) => error (?<name>a|b\g<name>c) => OK - ֹƽФϡ̾դͼ礬졢 - ONIG_OPTION_CAPTURE_GROUPꤵƤʤˤϡ - ػߤ롣 (10. ͼ ) + ※ 番号指定呼出しは、名前付き捕獲式集合が定義され、 + かつ ONIG_OPTION_CAPTURE_GROUPが指定されていない場合には、 + 禁止される。 (10. 捕獲式集合 を参照) - ƤӽФ줿Υץ֤ƽФ¦Υץ֤ȰۤʤäƤ - ȤƤӽФ줿¦Υץ֤ͭǤ롣 + ※ 呼び出された式集合のオプション状態が呼出し側のオプション状態と異なっている + とき、呼び出された側のオプション状態が有効である。 - . (?-i:\g<name>)(?i:(?<name>a)){0} "A" ˾ȹ롣 + 例. (?-i:\g<name>)(?i:(?<name>a)){0} は "A" に照合成功する。 -10. ͼ +10. 捕獲式集合 - ͼ(...)ϡʲξ˱ƿѲ롣 - (̾դͼѲʤ) + 捕獲式集合(...)は、以下の条件に応じて振舞が変化する。 + (名前付き捕獲式集合は変化しない) - case 1. /.../ (̾դͼԻѡץʤ) + case 1. /.../ (名前付き捕獲式集合は不使用、オプションなし) - (...) ϡͼȤư롣 + (...) は、捕獲式集合として扱われる。 - case 2. /.../g (̾դͼԻѡץ 'g') + case 2. /.../g (名前付き捕獲式集合は不使用、オプション 'g'を指定) - (...) ϡͼȤư롣 + (...) は、非捕獲式集合として扱われる。 - case 3. /..(?<name>..)../ (̾դͼϻѡץʤ) + case 3. /..(?<name>..)../ (名前付き捕獲式集合は使用、オプションなし) - (...) ϡͼȤư롣 - ֹ껲/ƤӽФԵġ + (...) は、非捕獲式集合として扱われる。 + 番号指定参照/呼び出しは不許可。 - case 4. /..(?<name>..)../G (̾դͼϻѡץ 'G') + case 4. /..(?<name>..)../G (名前付き捕獲式集合は使用、オプション 'G'を指定) - (...) ϡͼȤư롣 - ֹ껲/ƤӽФϵġ + (...) は、捕獲式集合として扱われる。 + 番号指定参照/呼び出しは許可。 - â + 但し g: ONIG_OPTION_DONT_CAPTURE_GROUP G: ONIG_OPTION_CAPTURE_GROUP - ('g''G'ץϡruby-dev MLǵ줿) + ('g'と'G'オプションは、ruby-dev MLで議論された。) - οΰ̣ϡ - ̾դ̵ͤ̾ͤƱ˻ѤɬΤ̤ϾʤǤ - Ȥͳͤ줿ΤǤ롣 + これらの振舞の意味は、 + 名前付き捕獲と名前無し捕獲を同時に使用する必然性のある場面は少ないであろう + という理由から考えられたものである。 ----------------------------- -䵭 1. ʸˡ¸ץ +補記 1. 文法依存オプション + ONIG_SYNTAX_RUBY - (?m): 䵭(.)ϲԤȾȹ + (?m): 終止符記号(.)は改行と照合成功 - + ONIG_SYNTAX_PERL ONIG_SYNTAX_JAVA - (?s): 䵭(.)ϲԤȾȹ - (?m): ^ ϲԤľ˾ȹ礹롢$ ϲԤľ˾ȹ礹 + + ONIG_SYNTAX_PERL と ONIG_SYNTAX_JAVA + (?s): 終止符記号(.)は改行と照合成功 + (?m): ^ は改行の直後に照合する、$ は改行の直前に照合する -䵭 2. ȼĥǽ +補記 2. 独自拡張機能 - + 16ʿ16ʿ \h, \H - + ̾դͼ (?<name>...), (?'name'...) - + ̾ \k<name> - + ʬƽФ \g<name>, \g<group-num> + + 16進数数字、非16進数字 \h, \H + + 名前付き捕獲式集合 (?<name>...), (?'name'...) + + 名前指定後方参照 \k<name> + + 部分式呼出し \g<name>, \g<group-num> -䵭 3. Perl 5.8.0Ӥ¸ߤʤǽ +補記 3. Perl 5.8.0と比較して存在しない機能 + \N{name} + \l,\u,\L,\U, \X, \C @@ -370,80 +376,80 @@ + (?(condition)yes-pat|no-pat) * \Q...\E - âONIG_SYNTAX_PERLONIG_SYNTAX_JAVAǤͭ - - -䵭 4. Ruby 1.8 ܸ첽 GNU regex(version 0.12)Ȥΰ㤤 - - + ʸPropertyǽɲ (\p{property}, \P{Property}) - + 16ʿɲ (\h, \H) - + ɤߵǽɲ - + ߤʷ֤Ҥɲ (?+, *+, ++) - + ʸα黻Ҥɲ ([...], &&) - ('[' ϡʸ̾ʸȤƻѤȤˤ - ʤФʤʤ) - + ̾դͼȡʬƽФǽɲ - + ¿ХʸɤꤵƤȤ - ʸȬʿޤϽϻʿɽϢ³ϡ¿Хɽ줿 - ĤʸȲᤵ - (. [\xa1\xa2], [\xa1\xa7-\xa4\xa1]) - + ʸǡХʸ¿Хʸϰϻϵ롣 - ex. /[a-]/ - + ΩץͭϰϤϡθΩץޤǤ뼰 - ޤǤǤ - . (?:(?i)a|b) (?:(?i:a|b)) Ȳᤵ롢(?:(?i:a)|b)ǤϤʤ - + ΩץϤμФƩŪǤϤʤ - . /a(?i)*/ ʸˡ顼Ȥʤ - + Դʷ֤ϰϻҤ̾ʸȤƵĤ - . /{/, /({)/, /a{2,3/ - + ŪPOSIX֥饱å [:^xxxx:] ɲ - + POSIX֥饱å [:ascii:] ɲ - + ɤߤη֤Ե - . /(?=a)*/, /(?!b){5}/ - + ͤǻꤵ줿ʸФƤ⡢ʸʸȹ祪ץͭ - . /\x61/i =~ "A" - + ֤ǡξά(0)Ǥ + 但しONIG_SYNTAX_PERLとONIG_SYNTAX_JAVAでは有効 + + +補記 4. Ruby 1.8 の日本語化 GNU regex(version 0.12)との違い + + + 文字Property機能追加 (\p{property}, \P{Property}) + + 16進数字タイプ追加 (\h, \H) + + 戻り読み機能を追加 + + 強欲な繰り返し指定子を追加 (?+, *+, ++) + + 文字集合の中の演算子を追加 ([...], &&) + ('[' は、文字集合の中で通常の文字として使用するときには + 退避修飾しなければならない) + + 名前付き捕獲式集合と、部分式呼出し機能追加 + + 多バイト文字コードが指定されているとき、 + 文字集合の中で八進数または十六進数表現の連続は、多バイト符号で表現された + 一個の文字と解釈される + (例. [\xa1\xa2], [\xa1\xa7-\xa4\xa1]) + + 文字集合の中で、一バイト文字と多バイト文字の範囲指定は許される。 + ex. /[a-あ]/ + + 孤立オプションの有効範囲は、その孤立オプションを含んでいる式集合の + 終わりまでである + 例. (?:(?i)a|b) は (?:(?i:a|b)) と解釈される、(?:(?i:a)|b)ではない + + 孤立オプションはその前の式に対して透過的ではない + 例. /a(?i)*/ は文法エラーとなる + + 不完全な繰り返し範囲指定子は通常の文字列として許可される + 例. /{/, /({)/, /a{2,3/ + + 否定的POSIXブラケット [:^xxxx:] を追加 + + POSIXブラケット [:ascii:] を追加 + + 先読みの繰り返しは不許可 + 例. /(?=a)*/, /(?!b){5}/ + + 数値で指定された文字に対しても、大文字小文字照合オプションは有効 + 例. /\x61/i =~ "A" + + 繰り返し回数指定で、最低回数の省略(0回)ができる /a{,n}/ == /a{0,n}/ - ȺƱάϵʤ(/a{,}/) - + /a{n}?/̵ߤʱ黻ҤǤϤʤ + 最低回数と最大回数の同時省略は許されない。(/a{,}/) + + /a{n}?/は無欲な演算子ではない。 /a{n}?/ == /(?:a{n})?/ - + ̵ʸȤåƥ顼ˤ롣 + + 無効な後方参照をチェックしてエラーにする。 /\1/, /(a)\2/ - + ̵·֤ǡĹǤξȹϷ֤Ǥ뤬 - ΤȤǤ٤ɤȽȤơͼ;֤ - ѲޤǹθƤ + + 無限繰り返しの中で、長さ零での照合成功は繰り返しを中断させるが、 + このとき、中断すべきかどうかの判定として、捕獲式集合の捕獲状態の + 変化まで考慮している /(?:()|())*\1\2/ =~ "" /(?:\1a|())*/ =~ "a" -䵭 5. Ƥ뤬ͤǤͭˤƤʤǽ +補記 5. 実装されているが、既定値では有効にしていない機能 - + + + 捕獲履歴参照 - (?@...) (?@<name>...) + (?@...) と (?@<name>...) - . /(?@a)*/.match("aaa") ==> [<0-1>, <1-2>, <2-3>] + 例. /(?@a)*/.match("aaa") ==> [<0-1>, <1-2>, <2-3>] - ˡϡsample/listcap.c + 使用方法は、sample/listcap.cを参照 - ͭˤƤʤͳϡɤΩĤϤäꤷʤᡣ + 有効にしていない理由は、どの程度役に立つかはっきりしないため。 -䵭 6. +補記 6. 問題点 - + ǥХͤŬʲɤΥåϹԤʤäƤʤ + + エンコーディングバイト値が適正な価かどうかのチェックは行なっていない。 - : UTF-8 + 例: UTF-8 - * ƬХȤȤʥХȤʸȤߤʤ + * 先頭バイトとして不正なバイトを一文字とみなす /./u =~ "\xa3" - * ԴʥХȥΥåʤ + * 不完全なバイトシーケンスのチェックをしない /\w+/u =~ "a\xf3\x8ec" - Ĵ٤뤳ȤϲǽǤϤ뤬٤ʤΤǹԤʤʤ + これを調べることは可能ではあるが、遅くなるので行なわない。 - ʸȤơΤ褦ʥХꤷưݾڤʤ + 文字列として、そのようなバイト列を指定した場合の動作は保証しない。 - +終り |