���� ����ɽ�� Version 5.9.1 2007/09/05 ����ʸˡ: ONIG_SYNTAX_RUBY (������) 1. �������� \ ���� (����������) ����ɽ�������ͭ��/̵�������� | ����� (...) ������ (���롼��) [...] ʸ������ (ʸ�����饹) 2. ʸ�� \t ��ʿ���� (0x09) \v ��ľ���� (0x0B) \n ���� (0x0A) \r ���� (0x0D) \b ������� (0x08) \f ���� (0x0C) \a �� (0x07) \e ���� (0x1B) \nnn Ȭ�ʿ�ɽ�� ��沽�Х�����(�ΰ���) \xHH ��ϻ�ʿ�ɽ�� ��沽�Х�����(�ΰ���) \x{7HHHHHHH} ��ĥ��ϻ�ʿ�ɽ�� �����ɥݥ������ \cx ����ʸ��ɽ�� �����ɥݥ������ \C-x ����ʸ��ɽ�� �����ɥݥ������ \M-x Ķ (x|0x80) �����ɥݥ������ \M-\C-x Ķ + ����ʸ��ɽ�� �����ɥݥ������ �� \b�ϡ�ʸ��������ǤΤ�ͭ�� 3. ʸ���� . Ǥ��ʸ�� (���Ԥ����) \w ñ�칽��ʸ�� Unicode�ʳ��ξ��: �ѿ���, "_" ����� ¿�Х���ʸ���� Unicode�ξ��: General_Category -- (Letter|Mark|Number|Connector_Punctuation) \W ��ñ�칽��ʸ�� \s ����ʸ�� Unicode�ʳ��ξ��: \t, \n, \v, \f, \r, \x20 Unicode�ξ��: 0009, 000A, 000B, 000C, 000D, 0085(NEL), General_Category -- Line_Separator -- Paragraph_Separator -- Space_Separator \S �����ʸ�� \d 10�ʿ��� Unicode�ξ��: General_Category -- Decimal_Number \D ��10�ʿ��� \h 16�ʿ��� [0-9a-fA-F] \H ��16�ʿ��� Character Property * \p{property-name} * \p{^property-name} (negative) * \P{property-name} (negative) property-name: + ���ƤΥ����ǥ���ͭ�� Alnum, Alpha, Blank, Cntrl, Digit, Graph, Lower, Print, Punct, Space, Upper, XDigit, Word, ASCII, + EUC-JP, Shift_JIS��ͭ�� Hiragana, Katakana + UTF8, UTF16, UTF32��ͭ�� Any, Assigned, C, Cc, Cf, Cn, Co, Cs, L, Ll, Lm, Lo, Lt, Lu, M, Mc, Me, Mn, N, Nd, Nl, No, P, Pc, Pd, Pe, Pf, Pi, Po, Ps, S, Sc, Sk, Sm, So, Z, Zl, Zp, Zs, Arabic, Armenian, Bengali, Bopomofo, Braille, Buginese, Buhid, Canadian_Aboriginal, Cherokee, Common, Coptic, Cypriot, Cyrillic, Deseret, Devanagari, Ethiopic, Georgian, Glagolitic, Gothic, Greek, Gujarati, Gurmukhi, Han, Hangul, Hanunoo, Hebrew, Hiragana, Inherited, Kannada, Katakana, Kharoshthi, Khmer, Lao, Latin, Limbu, Linear_B, Malayalam, Mongolian, Myanmar, New_Tai_Lue, Ogham, Old_Italic, Old_Persian, Oriya, Osmanya, Runic, Shavian, Sinhala, Syloti_Nagri, Syriac, Tagalog, Tagbanwa, Tai_Le, Tamil, Telugu, Thaana, Thai, Tibetan, Tifinagh, Ugaritic, Yi 4. �̻���� ��ĥ�� ? ���ޤ������� * ����ʾ� + ���ʾ� {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,}+, {n}+ �ϡ�ONIG_SYNTAX_JAVA�ǤΤ߶��ߤʻ����) ��. /a*+/ === /(?>a*)/ 5. �� ^ ��Ƭ $ ���� \b ñ�춭�� \B ��ñ�춭�� \A ʸ������Ƭ \Z ʸ�����������ޤ���ʸ���������β��Ԥ�ľ�� \z ʸ�������� \G �ȹ糫�ϰ��� 6. ʸ������ ^... ���� (����ͥ���ٱ黻��) x-y �ϰ� (x����y�ޤ�) [...] ���� (ʸ��������ʸ������) ..&&.. �ѱ黻 (^�μ���ͥ���٤��㤤�黻��) ��. [a-w&&[^c-g]z] ==> ([a-w] and ([^c-g] or z)) ==> [abh-w] �� '[', '-', ']'��ʸ����������̾�ʸ���ΰ�̣�ǻ��Ѥ��������ˤϡ� ������ʸ����'\'���������ʤ���Фʤ�ʤ��� POSIX�֥饱�å� ([:xxxxx:], ���� [:^xxxxx:]) Unicode�ʳ��ξ��: alnum �ѿ��� alpha �ѻ� ascii 0 - 127 blank \t, \x20 cntrl digit 0-9 graph ¿�Х���ʸ��������ޤ� lower print ¿�Х���ʸ��������ޤ� punct space \t, \n, \v, \f, \r, \x20 upper xdigit 0-9, a-f, A-F word �ѿ���, "_" ����� ¿�Х���ʸ�� Unicode�ξ��: alnum Letter | Mark | Decimal_Number alpha Letter | Mark ascii 0000 - 007F blank Space_Separator | 0009 cntrl Control | Format | Unassigned | Private_Use | Surrogate digit Decimal_Number graph [[:^space:]] && ^Control && ^Unassigned && ^Surrogate lower Lowercase_Letter print [[:graph:]] | [[:space:]] punct Connector_Punctuation | Dash_Punctuation | Close_Punctuation | Final_Punctuation | Initial_Punctuation | Other_Punctuation | Open_Punctuation space Space_Separator | Line_Separator | Paragraph_Separator | 0009 | 000A | 000B | 000C | 000D | 0085 upper Uppercase_Letter xdigit 0030 - 0039 | 0041 - 0046 | 0061 - 0066 (0-9, a-f, A-F) word Letter | Mark | Decimal_Number | Connector_Punctuation 7. ��ĥ������ (?#...) ���� (?imx-imx) ��Ω���ץ���� i: ��ʸ����ʸ���ȹ� m: ʣ���� x: ��ĥ���� (?imx-imx:��) �����ץ���� (��) ��ͼ����� (?:��) ����ͼ����� (?=��) ���ɤ� (?!��) �������ɤ� (?<=��) ����ɤ� (?<!��) ��������ɤ� ����ɤߤμ��ϸ���ʸ��Ĺ�Ǥʤ���Фʤ�ʤ��� ���������Ǿ�̤�����Ҥ����ϰۤʤä�ʸ��Ĺ��������롣 ��. (?<=a|bc) �ϵ���. (?<=aaa(?:b|cd)) ���Ե��� ��������ɤߤǤϡ���ͼ�����ϵ�����ʤ����� ����ͼ�����ϵ�����롣 (?>��) ����Ū������ �����Τ��̲ᤷ���Ȥ���������Ǥθ���ƻ�Ԥ�Ԥʤ�ʤ� (?<name>��), (?'name'��) ̾���դ���ͼ����� �������̾���������Ƥ�(�������)�� (̾����ñ�칽��ʸ���Ǥʤ���Фʤ�ʤ���) ̾�������Ǥʤ�����ͼ������Ʊ�ͤ��ֹ�������Ƥ��롣 �ֹ���꤬�ػߤ���Ƥ��ʤ����� (10. ��ͼ����� ��) �ΤȤ��ϡ�̾����Ȥ�ʤ����ֹ�Ǥ⻲�ȤǤ��롣 ʣ���μ������Ʊ��̾����Ϳ���뤳�Ȥϵ�����Ƥ��롣 ���ξ��ˤϡ�����̾������Ѥ����������Ȥϲ�ǽ�Ǥ��뤬�� ��ʬ���ƽФ��ϤǤ��ʤ��� 8. �������� \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. ��ͼ����� ��) �ͥ��ȥ�٥��դ��������� level: 0, 1, 2, ... \k<n+level> (n >= 1) \k<n-level> (n >= 1) \k'n+level' (n >= 1) \k'n-level' (n >= 1) \k<name+level> \k<name-level> \k'name+level' \k'name-level' �������Ȥΰ��֤�������Ū����ʬ���ƽФ��ͥ��ȥ�٥����ꤷ�ơ����Υ�٥�Ǥ� ����ͤȤ��롣 ��-1. /\A(?<a>|.|(?:(?<b>.)\g<a>\k<b+0>))\z/.match("reer") ��-2. r = Regexp.compile(<<'__REGEXP__'.strip, Regexp::EXTENDED) (?<element> \g<stag> \g<content>* \g<etag> ){0} (?<stag> < \g<name> \s* > ){0} (?<name> [a-zA-Z_:]+ ){0} (?<content> [^<&]+ (\g<element> | [^<&]+)* ){0} (?<etag> </ \k<name+1> >){0} \g<element> __REGEXP__ p r.match('<foo>f<bar>bbb</bar>f</foo>').captures 9. ��ʬ���ƽФ� ("����ů���ڥ����") \g<name> ̾������ƽФ� \g'name' ̾������ƽФ� \g<n> �ֹ����ƽФ� (n >= 1) \g'n' �ֹ����ƽФ� (n >= 1) \g<-n> �����ֹ����ƽФ� (n >= 1) \g'-n' �����ֹ����ƽФ� (n >= 1) �� �Ǻ����֤ǤκƵ��ƽФ��϶ػߤ���롣 ��. (?<name>a|\g<name>b) => error (?<name>a|b\g<name>c) => OK �� �ֹ����ƽФ��ϡ�̾���դ���ͼ����礬������졢 ���� ONIG_OPTION_CAPTURE_GROUP�����ꤵ��Ƥ��ʤ����ˤϡ� �ػߤ���롣 (10. ��ͼ����� ��) �� �ƤӽФ��줿������Υ��ץ������֤��ƽФ�¦�Υ��ץ������֤ȰۤʤäƤ��� �Ȥ����ƤӽФ��줿¦�Υ��ץ������֤�ͭ���Ǥ��롣 ��. (?-i:\g<name>)(?i:(?<name>a)){0} �� "A" �˾ȹ��������롣 10. ��ͼ����� ��ͼ�����(...)�ϡ��ʲ��ξ��˱����ƿ����Ѳ����롣 (̾���դ���ͼ�������Ѳ����ʤ�) case 1. /.../ (̾���դ���ͼ�������Ի��ѡ����ץ����ʤ�) (...) �ϡ���ͼ�����Ȥ��ư����롣 case 2. /.../g (̾���դ���ͼ�������Ի��ѡ����ץ���� 'g'�����) (...) �ϡ�����ͼ�����Ȥ��ư����롣 case 3. /..(?<name>..)../ (̾���դ���ͼ�����ϻ��ѡ����ץ����ʤ�) (...) �ϡ�����ͼ�����Ȥ��ư����롣 �ֹ���껲��/�ƤӽФ����Ե��ġ� case 4. /..(?<name>..)../G (̾���դ���ͼ�����ϻ��ѡ����ץ���� 'G'�����) (...) �ϡ���ͼ�����Ȥ��ư����롣 �ֹ���껲��/�ƤӽФ��ϵ��ġ� â�� g: ONIG_OPTION_DONT_CAPTURE_GROUP G: ONIG_OPTION_CAPTURE_GROUP ('g'��'G'���ץ����ϡ�ruby-dev ML�ǵ������줿��) �����ο���ΰ�̣�ϡ� ̾���դ���ͤ�̾��̵����ͤ�Ʊ���˻��Ѥ���ɬ�����Τ�����̤Ͼ��ʤ��Ǥ����� �Ȥ�����ͳ����ͤ���줿��ΤǤ��롣 ----------------------------- �䵭 1. ʸˡ��¸���ץ���� + ONIG_SYNTAX_RUBY (?m): �����䵭��(.)�ϲ��ԤȾȹ����� + ONIG_SYNTAX_PERL �� ONIG_SYNTAX_JAVA (?s): �����䵭��(.)�ϲ��ԤȾȹ����� (?m): ^ �ϲ��Ԥ�ľ��˾ȹ礹�롢$ �ϲ��Ԥ�ľ���˾ȹ礹�� �䵭 2. �ȼ���ĥ��ǽ + 16�ʿ���������16�ʿ��� \h, \H + ̾���դ���ͼ����� (?<name>...), (?'name'...) + ̾������������� \k<name> + ��ʬ���ƽФ� \g<name>, \g<group-num> �䵭 3. Perl 5.8.0����Ӥ���¸�ߤ��ʤ���ǽ + \N{name} + \l,\u,\L,\U, \X, \C + (?{code}) + (??{code}) + (?(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��)���Ǥ��� /a{,n}/ == /a{0,n}/ �������Ⱥ�������Ʊ����ά�ϵ�����ʤ���(/a{,}/) + /a{n}?/��̵�ߤʱ黻�ҤǤϤʤ��� /a{n}?/ == /(?:a{n})?/ + ̵���ʸ������Ȥ�����å����ƥ��顼�ˤ��롣 /\1/, /(a)\2/ + ̵�·����֤�����ǡ�Ĺ�����Ǥξȹ������Ϸ����֤������Ǥ����뤬�� ���ΤȤ������Ǥ��٤����ɤ�����Ƚ��Ȥ��ơ���ͼ��������;��֤� �Ѳ��ޤǹ�θ���Ƥ��� /(?:()|())*\1\2/ =~ "" /(?:\1a|())*/ =~ "a" �䵭 5. ��������Ƥ��뤬�������ͤǤ�ͭ���ˤ��Ƥ��ʤ���ǽ + ������� (?@...) �� (?@<name>...) ��. /(?@a)*/.match("aaa") ==> [<0-1>, <1-2>, <2-3>] ������ˡ�ϡ�sample/listcap.c�� ͭ���ˤ��Ƥ��ʤ���ͳ�ϡ��ɤ��������Ω�Ĥ��Ϥä��ꤷ�ʤ����ᡣ �䵭 6. ������ + �����ǥ��Х����ͤ�Ŭ���ʲ����ɤ����Υ����å��ϹԤʤäƤ��ʤ��� ��: UTF-8 * ��Ƭ�Х��ȤȤ��������ʥХ��Ȥ��ʸ���Ȥߤʤ� /./u =~ "\xa3" * �Դ����ʥХ��ȥ������Υ����å��ʤ� /\w+/u =~ "a\xf3\x8ec" �����Ĵ�٤뤳�Ȥϲ�ǽ�ǤϤ��뤬���٤��ʤ�ΤǹԤʤ�ʤ��� ʸ����Ȥ��ơ����Τ褦�ʥХ��������ꤷ������ư����ݾڤ��ʤ��� ����