diff options
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 +薔取 罩h頫 Version 6.4.0 2017/06/28 -使用文法: ONIG_SYNTAX_RUBY (既定値) +篏睡羈: ONIG_SYNTAX_RUBY (√) -1. 基本要素 +1. 堺荀膣 - \ 退避修飾 (エスケープ) 正規表現記号の有効/無効の制御 - | 選択子 - (...) 式集合 (グループ) - [...] 文字集合 (文字クラス) + \ 推信蕋 (鴻宴若) 罩h頫憠垩/≦鴻九勝 + | 御絖 + (...) 綣 (違若) + [...] 絖 (絖) -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: - + 全てのエンコーディングで有効 + + 潟潟若c潟違ф 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 範囲 (xからyまで) - [...] 集合 (文字集合内文字集合) - ..&&.. 積演算 (^の次に優先度が低い演算子) + ^... 絎 (篏綺羲膊絖) + x-y 膀 (xy障) + [...] (絖絖) + ..&&.. 腥羲膊 (^罨<綺篏羲膊絖) - 例. [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)) は不許可 + 祉茯帥綣阪絖激с違 + 筝篏御絖違c絖激荐宴 + 箴. (?<=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. 綣弱冴 ("遺賢蚊鴻激c") - \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. 峨 ) - ※ 呼び出された式集合のオプション状態が呼出し側のオプション状態と異なっている - とき、呼び出された側のオプション状態が有効である。 + 若喝冴綣激с括倶弱冴眼激с括倶違c + 若喝冴眼激с括倶鴻с - 例. (?-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_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回)ができる + 篏ONIG_SYNTAX_PERLONIG_SYNTAX_JAVAс + + +茖荐 4. Ruby 1.8 ユ茯 GNU regex(version 0.12) + + + 絖Property罘処申 (\p{property}, \P{Property}) + + 16我医帥ゃ菴遵 (\h, \H) + + 祉茯炊純菴遵 + + 綣傑蚊膵違菴絎絖菴遵 (?+, *+, ++) + + 絖筝羲膊絖菴遵 ([...], &&) + ('[' 絖筝ч絽吾絖篏睡 + 推信蕋障違) + + 篁峨綣弱冴罘処申 + + 紊ゃ絖潟若絎 + 絖筝у我違障我域;憗g紊ゃ膃垩ц;憗 + 筝絖茹i + (箴. [\xa1\xa2], [\xa1\xa7-\xa4\xa1]) + + 絖筝с筝ゃ絖紊ゃ絖膀我絎荐宴 + ex. /[a-]/ + + 絖ょ激с潟合蚊絖ょ激с潟с綣 + 腟障сс + 箴. (?:(?i)a|b) (?:(?i:a|b)) 茹i(?:(?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 - 有効にしていない理由は、どの程度役に立つかはっきりしないため。 + 鴻宴腮綺綵鴻腴ゃc -補記 6. 問題点 +茖荐 6. 馹 - + エンコーディングバイト値が適正な価かどうかのチェックは行なっていない。 + + 潟潟若c潟違ゃゃ罩c箴<с茵c - 例: UTF-8 + 箴: UTF-8 - * 先頭バイトとして不正なバイトを一文字とみなす + * ゃ筝罩cゃ筝絖帥 /./u =~ "\xa3" - * 不完全なバイトシーケンスのチェックをしない + * 筝絎ゃ激若宴潟鴻с /\w+/u =~ "a\xf3\x8ec" - これを調べることは可能ではあるが、遅くなるので行なわない。 + 茯帥鴻純сц - 文字列として、そのようなバイト列を指定した場合の動作は保証しない。 + 絖ゃ絎翫篏篆荐若 -終り +腟 |