# 2.8.2 Regular Expression General Requirement 2�4�bb*�abbbc� 2�2�bb*�ababbbc� 7�9�A#*::�A:A#:qA::qA#::qA##::q� 1�5�A#*::�A##::A#::qA::qA#:q� # 2.8.3.1.2 BRE Special Characters # GA108 2�2�\.�a.c� 2�2�\[�a[c� 2�2�\\�a\c� 2�2�\*�a*c� 2�2�\^�a^c� 2�2�\$�a$c� 7�11�X\*Y\*8�Y*8X*8X*Y*8� # GA109 2�2�[.]�a.c� 2�2�[[]�a[c� -1�-1�[[]�ac� 2�2�[\]�a\c� 1�1�[\a]�abc� 2�2�[\.]�a\.c� 2�2�[\.]�a.\c� 2�2�[*]�a*c� 2�2�[$]�a$c� 2�2�[X*Y8]�7*8YX� # GA110 2�2�*�a*c� 3�4�*a�*b*a*c� 1�5�**9=�***9=9� # GA111 1�1�^*�*bc� -1�-1�^*�a*c� -1�-1�^*�^*ab� 1�5�^**9=�***9=� -1�-1�^*5<*9�5<9*5<*9� # GA112 2�3�\(*b\)�a*b� -1�-1�\(*b\)�ac� 1�6�A\(**9\)=�A***9=79� # GA113(1) 1�3�\(^*ab\)�*ab� -1�-1�\(^*ab\)�^*ab� -1�-1�\(^*b\)�a*b� -1�-1�\(^*b\)�^*b� ### GA113(2) GNU regex implements GA113(1) ##-1�-1�\(^*ab\)�*ab� ##-1�-1�\(^*ab\)�^*ab� ##1�1�\(^*b\)�b� ##1�3�\(^*b\)�^^b� # GA114 1�3�a^b�a^b� 1�3�a\^b�a^b� 1�1�^^�^bc� 2�2�\^�a^c� 1�1�[c^b]�^abc� 1�1�[\^ab]�^ab� 2�2�[\^ab]�c\d� -1�-1�[^^]�^� 1�3�\(a^b\)�a^b� 1�3�\(a\^b\)�a^b� 2�2�\(\^\)�a^b� # GA115 3�3�$$�ab$� -1�-1�$$�$ab� 2�3�$c�a$c� 2�2�[$]�a$c� 1�2�\$a�$a� 3�3�\$$�ab$� 2�6�A\([34]$[34]\)B�XA4$3BY� # 2.8.3.1.3 Periods in BREs # GA116 1�1�.�abc� -1�-1�.ab�abc� 1�3�ab.�abc� 1�3�a.b�a,b� -1�-1�.......�PqRs6� 1�7�.......�PqRs6T8� # 2.8.3.2 RE Bracket Expression # GA118 2�2�[abc]�xbyz� -1�-1�[abc]�xyz� 2�2�[abc]�xbay� # GA119 2�2�[^a]�abc� 4�4�[^]cd]�cd]ef� 2�2�[^abc]�axyz� -1�-1�[^abc]�abc� 3�3�[^[.a.]b]�abc� 3�3�[^[=a=]b]�abc� 2�2�[^-ac]�abcde-� 2�2�[^ac-]�abcde-� 3�3�[^a-b]�abcde� 3�3�[^a-bd-e]�dec� 2�2�[^---]�-ab� 16�16�[^a-zA-Z0-9]�pqrstVWXYZ23579#� # GA120(1) 3�3�[]a]�cd]ef� 1�1�[]-a]�a_b� 3�3�[][.-.]-0]�ab0-]� 1�1�[]^a-z]�string� # GA120(2) 4�4�[^]cd]�cd]ef� 0�0�[^]]*�]]]]]]]]X� 0�0�[^]]*�]]]]]]]]� 9�9�[^]]\{1,\}�]]]]]]]]X� -1�-1�[^]]\{1,\}�]]]]]]]]� # GA120(3) 3�3�[c[.].]d]�ab]cd� 2�8�[a-z]*[[.].]][A-Z]*�Abcd]DEFg� # GA121 2�2�[[.a.]b]�Abc� 1�1�[[.a.]b]�aBc� -1�-1�[[.a.]b]�ABc� 3�3�[^[.a.]b]�abc� 3�3�[][.-.]-0]�ab0-]� 3�3�[A-[.].]c]�ab]!� # GA122 -2�-2�[[.ch.]]�abc� -2�-2�[[.ab.][.CD.][.EF.]]�yZabCDEFQ9� # GA125 2�2�[[=a=]b]�Abc� 1�1�[[=a=]b]�aBc� -1�-1�[[=a=]b]�ABc� 3�3�[^[=a=]b]�abc� # GA126 #W the expected result for [[:alnum:]]* is 2-7 which is wrong 0�0�[[:alnum:]]*� aB28gH� 2�7�[[:alnum:]][[:alnum:]]*� aB28gH� #W the expected result for [^[:alnum:]]* is 2-5 which is wrong 0�0�[^[:alnum:]]*�2 ,a� 2�5�[^[:alnum:]][^[:alnum:]]*�2 ,a� #W the expected result for [[:alpha:]]* is 2-5 which is wrong 0�0�[[:alpha:]]*� aBgH2� 2�5�[[:alpha:]][[:alpha:]]*� aBgH2� 1�6�[^[:alpha:]]*�2 8,a� 1�2�[[:blank:]]*� � 1�8�[^[:blank:]]*�aB28gH, � 1�2�[[:cntrl:]]*� � 1�8�[^[:cntrl:]]*�aB2 8gh,� #W the expected result for [[:digit:]]* is 2-3 which is wrong 0�0�[[:digit:]]*�a28� 2�3�[[:digit:]][[:digit:]]*�a28� 1�8�[^[:digit:]]*�aB gH,� 1�7�[[:graph:]]*�aB28gH, � 1�3�[^[:graph:]]*� ,� 1�2�[[:lower:]]*�agB� 1�8�[^[:lower:]]*�B2 8H,a� 1�8�[[:print:]]*�aB2 8gH, � 1�2�[^[:print:]]*� � #W the expected result for [[:punct:]]* is 2-2 which is wrong 0�0�[[:punct:]]*�a,2� 2�3�[[:punct:]][[:punct:]]*�a,,2� 1�9�[^[:punct:]]*�aB2 8gH� 1�3�[[:space:]]*� � #W the expected result for [^[:space:]]* is 2-9 which is wrong 0�0�[^[:space:]]*� aB28gH, � 2�9�[^[:space:]][^[:space:]]*� aB28gH, � #W the expected result for [[:upper:]]* is 2-3 which is wrong 0�0�[[:upper:]]*�aBH2� 2�3�[[:upper:]][[:upper:]]*�aBH2� 1�8�[^[:upper:]]*�a2 8g,B� #W the expected result for [[:xdigit:]]* is 2-5 which is wrong 0�0�[[:xdigit:]]*�gaB28h� 2�5�[[:xdigit:]][[:xdigit:]]*�gaB28h� #W the expected result for [^[:xdigit:]]* is 2-7 which is wrong 2�7�[^[:xdigit:]][^[:xdigit:]]*�a gH,2� # GA127 -2�-2�[b-a]�abc� 1�1�[a-c]�bbccde� 2�2�[a-b]�-bc� 3�3�[a-z0-9]�AB0� 3�3�[^a-b]�abcde� 3�3�[^a-bd-e]�dec� 1�1�[]-a]�a_b� 2�2�[+--]�a,b� 2�2�[--/]�a.b� 2�2�[^---]�-ab� 3�3�[][.-.]-0]�ab0-]� 3�3�[A-[.].]c]�ab]!� 2�6�bc[d-w]xy�abchxyz� # GA129 1�1�[a-cd-f]�dbccde� -1�-1�[a-ce-f]�dBCCdE� 2�4�b[n-zA-M]Y�absY9Z� 2�4�b[n-zA-M]Y�abGY9Z� # GA130 3�3�[-xy]�ac-� 2�4�c[-xy]D�ac-D+� 2�2�[--/]�a.b� 2�4�c[--/]D�ac.D+b� 2�2�[^-ac]�abcde-� 1�3�a[^-ac]c�abcde-� 3�3�[xy-]�zc-� 2�4�c[xy-]7�zc-786� 2�2�[^ac-]�abcde-� 2�4�a[^ac-]c�5abcde-� 2�2�[+--]�a,b� 2�4�a[+--]B�Xa,By� 2�2�[^---]�-ab� 4�6�X[^---]Y�X-YXaYXbY� # 2.8.3.3 BREs Matching Multiple Characters # GA131 3�4�cd�abcdeabcde� 1�2�ag*b�abcde� -1�-1�[a-c][e-f]�abcdef� 3�4�[a-c][e-f]�acbedf� 4�8�abc*XYZ�890abXYZ#*� 4�9�abc*XYZ�890abcXYZ#*� 4�15�abc*XYZ�890abcccccccXYZ#*� -1�-1�abc*XYZ�890abc*XYZ#*� # GA132 2�4�\(*bc\)�a*bc� 1�2�\(ab\)�abcde� 1�10�\(a\(b\(c\(d\(e\(f\(g\)h\(i\(j\)\)\)\)\)\)\)\)�abcdefghijk� 3�8�43\(2\(6\)*0\)AB�654320ABCD� 3�9�43\(2\(7\)*0\)AB�6543270ABCD� 3�12�43\(2\(7\)*0\)AB�6543277770ABCD� # GA133 1�10�\(a\(b\(c\(d\(e\(f\(g\)h\(i\(j\)\)\)\)\)\)\)\)�abcdefghijk� -1�-1�\(a\(b\(c\(d\(e\(f\(g\)h\(i\(k\)\)\)\)\)\)\)\)�abcdefghijk� # GA134 2�4�\(bb*\)�abbbc� 2�2�\(bb*\)�ababbbc� 1�6�a\(.*b\)�ababbbc� 1�2�a\(b*\)�ababbbc� 1�20�a\(.*b\)c�axcaxbbbcsxbbbbbbbbc� # GA135 1�7�\(a\(b\(c\(d\(e\)\)\)\)\)\4�abcdededede� #W POSIX does not really specify whether a\(b\)*c\1 matches acb. #W back references are supposed to expand to the last match, but what #W if there never was a match as in this case? -1�-1�a\(b\)*c\1�acb� 1�11�\(a\(b\(c\(d\(e\(f\(g\)h\(i\(j\)\)\)\)\)\)\)\)\9�abcdefghijjk� # GA136 #W These two tests have the same problem as the test in GA135. No match #W of a subexpression, why should the back reference be usable? #W 1 2 a\(b\)*c\1 acb #W 4 7 a\(b\(c\(d\(f\)*\)\)\)\4�xYzabcdePQRST -1�-1�a\(b\)*c\1�acb� -1�-1�a\(b\(c\(d\(f\)*\)\)\)\4�xYzabcdePQRST� # GA137 -2�-2�\(a\(b\)\)\3�foo� -2�-2�\(a\(b\)\)\(a\(b\)\)\5�foo� # GA138 1�2�ag*b�abcde� 1�10�a.*b�abababvbabc� 2�5�b*c�abbbcdeabbbbbbcde� 2�5�bbb*c�abbbcdeabbbbbbcde� 1�5�a\(b\)*c\1�abbcbbb� -1�-1�a\(b\)*c\1�abbdbd� 0�0�\([a-c]*\)\1�abcacdef� 1�6�\([a-c]*\)\1�abcabcabcd� 1�2�a^*b�ab� 1�5�a^*b�a^^^b� # GA139 1�2�a\{2\}�aaaa� 1�7�\([a-c]*\)\{0,\}�aabcaab� 1�2�\(a\)\1\{1,2\}�aabc� 1�3�\(a\)\1\{1,2\}�aaaabc� #W the expression \(\(a\)\1\)\{1,2\} is ill-formed, using \2 1�4�\(\(a\)\2\)\{1,2\}�aaaabc� # GA140 1�2�a\{2\}�aaaa� -1�-1�a\{2\}�abcd� 0�0�a\{0\}�aaaa� 1�64�a\{64\}�aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa� # GA141 1�7�\([a-c]*\)\{0,\}�aabcaab� #W the expected result for \([a-c]*\)\{2,\} is failure which isn't correct 1�3�\([a-c]*\)\{2,\}�abcdefg� 1�3�\([a-c]*\)\{1,\}�abcdefg� -1�-1�a\{64,\}�aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa� # GA142 1�3�a\{2,3\}�aaaa� -1�-1�a\{2,3\}�abcd� 0�0�\([a-c]*\)\{0,0\}�foo� 1�63�a\{1,63\}�aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa� # 2.8.3.4 BRE Precedence # GA143 #W There are numerous bugs in the original version. 2�19�\^\[[[.].]]\\(\\1\\)\*\\{1,2\\}\$�a^[]\(\1\)*\{1,2\}$b� 1�6�[[=*=]][[=\=]][[=]=]][[===]][[...]][[:punct:]]�*\]=.;� 1�6�[$\(*\)^]*�$\()*^� 1�1�[\1]�1� 1�1�[\{1,2\}]�{� #W the expected result for \(*\)*\1* is 2-2 which isn't correct 0�0�\(*\)*\1*�a*b*11� 2�3�\(*\)*\1*b�a*b*11� #W the expected result for \(a\(b\{1,2\}\)\{1,2\}\) is 1-5 which isn't correct 1�3�\(a\(b\{1,2\}\)\{1,2\}\)�abbab� 1�5�\(a\(b\{1,2\}\)\)\{1,2\}�abbab� 1�1�^\(^\(^a$\)$\)$�a� 1�2�\(a\)\1$�aa� 1�3�ab*�abb� 1�4�ab\{2,4\}�abbbc� # 2.8.3.5 BRE Expression Anchoring # GA144 1�1�^a�abc� -1�-1�^b�abc� -1�-1�^[a-zA-Z]�99Nine� 1�4�^[a-zA-Z]*�Nine99� # GA145(1) 1�2�\(^a\)\1�aabc� -1�-1�\(^a\)\1�^a^abc� 1�2�\(^^a\)�^a� 1�1�\(^^\)�^^� 1�3�\(^abc\)�abcdef� -1�-1�\(^def\)�abcdef� ### GA145(2) GNU regex implements GA145(1) ##-1�-1�\(^a\)\1�aabc� ##1�4�\(^a\)\1�^a^abc� ##-1�-1�\(^^a\)�^a� ##1�2�\(^^\)�^^� # GA146 3�3�a$�cba� -1�-1�a$�abc� 5�7�[a-z]*$�99ZZxyz� #W the expected result for [a-z]*$ is failure which isn't correct 10�9�[a-z]*$�99ZZxyz99� 3�3�$$�ab$� -1�-1�$$�$ab� 3�3�\$$�ab$� # GA147(1) -1�-1�\(a$\)\1�bcaa� -1�-1�\(a$\)\1�ba$� -1�-1�\(ab$\)�ab$� 1�2�\(ab$\)�ab� 4�6�\(def$\)�abcdef� -1�-1�\(abc$\)�abcdef� ### GA147(2) GNU regex implements GA147(1) ##-1�-1�\(a$\)\1�bcaa� ##2�5�\(a$\)\1�ba$a$� ##-1�-1�\(ab$\)�ab� ##1�3�\(ab$\)�ab$� # GA148 0�0�^$�� 1�3�^abc$�abc� -1�-1�^xyz$�^xyz^� -1�-1�^234$�^234$� 1�9�^[a-zA-Z0-9]*$�2aA3bB9zZ� -1�-1�^[a-z0-9]*$�2aA3b#B9zZ�