|
| 1 | +# 2.8.2 Regular Expression General Requirement |
| 2 | +2�4�bb*�abbbc� |
| 3 | +2�2�bb*�ababbbc� |
| 4 | +7�9�A#*::�A:A#:qA::qA#::qA##::q� |
| 5 | +1�5�A#*::�A##::A#::qA::qA#:q� |
| 6 | +# 2.8.3.1.2 BRE Special Characters |
| 7 | +# GA108 |
| 8 | +2�2�\.�a.c� |
| 9 | +2�2�\[�a[c� |
| 10 | +2�2�\\�a\c� |
| 11 | +2�2�\*�a*c� |
| 12 | +2�2�\^�a^c� |
| 13 | +2�2�\$�a$c� |
| 14 | +7�11�X\*Y\*8�Y*8X*8X*Y*8� |
| 15 | +# GA109 |
| 16 | +2�2�[.]�a.c� |
| 17 | +2�2�[[]�a[c� |
| 18 | +-1�-1�[[]�ac� |
| 19 | +2�2�[\]�a\c� |
| 20 | +1�1�[\a]�abc� |
| 21 | +2�2�[\.]�a\.c� |
| 22 | +2�2�[\.]�a.\c� |
| 23 | +2�2�[*]�a*c� |
| 24 | +2�2�[$]�a$c� |
| 25 | +2�2�[X*Y8]�7*8YX� |
| 26 | +# GA110 |
| 27 | +2�2�*�a*c� |
| 28 | +3�4�*a�*b*a*c� |
| 29 | +1�5�**9=�***9=9� |
| 30 | +# GA111 |
| 31 | +1�1�^*�*bc� |
| 32 | +-1�-1�^*�a*c� |
| 33 | +-1�-1�^*�^*ab� |
| 34 | +1�5�^**9=�***9=� |
| 35 | +-1�-1�^*5<*9�5<9*5<*9� |
| 36 | +# GA112 |
| 37 | +2�3�\(*b\)�a*b� |
| 38 | +-1�-1�\(*b\)�ac� |
| 39 | +1�6�A\(**9\)=�A***9=79� |
| 40 | +# GA113(1) |
| 41 | +1�3�\(^*ab\)�*ab� |
| 42 | +-1�-1�\(^*ab\)�^*ab� |
| 43 | +-1�-1�\(^*b\)�a*b� |
| 44 | +-1�-1�\(^*b\)�^*b� |
| 45 | +### GA113(2) GNU regex implements GA113(1) |
| 46 | +##-1�-1�\(^*ab\)�*ab� |
| 47 | +##-1�-1�\(^*ab\)�^*ab� |
| 48 | +##1�1�\(^*b\)�b� |
| 49 | +##1�3�\(^*b\)�^^b� |
| 50 | +# GA114 |
| 51 | +1�3�a^b�a^b� |
| 52 | +1�3�a\^b�a^b� |
| 53 | +1�1�^^�^bc� |
| 54 | +2�2�\^�a^c� |
| 55 | +1�1�[c^b]�^abc� |
| 56 | +1�1�[\^ab]�^ab� |
| 57 | +2�2�[\^ab]�c\d� |
| 58 | +-1�-1�[^^]�^� |
| 59 | +1�3�\(a^b\)�a^b� |
| 60 | +1�3�\(a\^b\)�a^b� |
| 61 | +2�2�\(\^\)�a^b� |
| 62 | +# GA115 |
| 63 | +3�3�$$�ab$� |
| 64 | +-1�-1�$$�$ab� |
| 65 | +2�3�$c�a$c� |
| 66 | +2�2�[$]�a$c� |
| 67 | +1�2�\$a�$a� |
| 68 | +3�3�\$$�ab$� |
| 69 | +2�6�A\([34]$[34]\)B�XA4$3BY� |
| 70 | +# 2.8.3.1.3 Periods in BREs |
| 71 | +# GA116 |
| 72 | +1�1�.�abc� |
| 73 | +-1�-1�.ab�abc� |
| 74 | +1�3�ab.�abc� |
| 75 | +1�3�a.b�a,b� |
| 76 | +-1�-1�.......�PqRs6� |
| 77 | +1�7�.......�PqRs6T8� |
| 78 | +# 2.8.3.2 RE Bracket Expression |
| 79 | +# GA118 |
| 80 | +2�2�[abc]�xbyz� |
| 81 | +-1�-1�[abc]�xyz� |
| 82 | +2�2�[abc]�xbay� |
| 83 | +# GA119 |
| 84 | +2�2�[^a]�abc� |
| 85 | +4�4�[^]cd]�cd]ef� |
| 86 | +2�2�[^abc]�axyz� |
| 87 | +-1�-1�[^abc]�abc� |
| 88 | +3�3�[^[.a.]b]�abc� |
| 89 | +3�3�[^[=a=]b]�abc� |
| 90 | +2�2�[^-ac]�abcde-� |
| 91 | +2�2�[^ac-]�abcde-� |
| 92 | +3�3�[^a-b]�abcde� |
| 93 | +3�3�[^a-bd-e]�dec� |
| 94 | +2�2�[^---]�-ab� |
| 95 | +16�16�[^a-zA-Z0-9]�pqrstVWXYZ23579#� |
| 96 | +# GA120(1) |
| 97 | +3�3�[]a]�cd]ef� |
| 98 | +1�1�[]-a]�a_b� |
| 99 | +3�3�[][.-.]-0]�ab0-]� |
| 100 | +1�1�[]^a-z]�string� |
| 101 | +# GA120(2) |
| 102 | +4�4�[^]cd]�cd]ef� |
| 103 | +0�0�[^]]*�]]]]]]]]X� |
| 104 | +0�0�[^]]*�]]]]]]]]� |
| 105 | +9�9�[^]]\{1,\}�]]]]]]]]X� |
| 106 | +-1�-1�[^]]\{1,\}�]]]]]]]]� |
| 107 | +# GA120(3) |
| 108 | +3�3�[c[.].]d]�ab]cd� |
| 109 | +2�8�[a-z]*[[.].]][A-Z]*�Abcd]DEFg� |
| 110 | +# GA121 |
| 111 | +2�2�[[.a.]b]�Abc� |
| 112 | +1�1�[[.a.]b]�aBc� |
| 113 | +-1�-1�[[.a.]b]�ABc� |
| 114 | +3�3�[^[.a.]b]�abc� |
| 115 | +3�3�[][.-.]-0]�ab0-]� |
| 116 | +3�3�[A-[.].]c]�ab]!� |
| 117 | +# GA122 |
| 118 | +-2�-2�[[.ch.]]�abc� |
| 119 | +-2�-2�[[.ab.][.CD.][.EF.]]�yZabCDEFQ9� |
| 120 | +# GA125 |
| 121 | +2�2�[[=a=]b]�Abc� |
| 122 | +1�1�[[=a=]b]�aBc� |
| 123 | +-1�-1�[[=a=]b]�ABc� |
| 124 | +3�3�[^[=a=]b]�abc� |
| 125 | +# GA126 |
| 126 | +#W the expected result for [[:alnum:]]* is 2-7 which is wrong |
| 127 | +0�0�[[:alnum:]]*� aB28gH� |
| 128 | +2�7�[[:alnum:]][[:alnum:]]*� aB28gH� |
| 129 | +#W the expected result for [^[:alnum:]]* is 2-5 which is wrong |
| 130 | +0�0�[^[:alnum:]]*�2 ,a� |
| 131 | +2�5�[^[:alnum:]][^[:alnum:]]*�2 ,a� |
| 132 | +#W the expected result for [[:alpha:]]* is 2-5 which is wrong |
| 133 | +0�0�[[:alpha:]]*� aBgH2� |
| 134 | +2�5�[[:alpha:]][[:alpha:]]*� aBgH2� |
| 135 | +1�6�[^[:alpha:]]*�2 8,a� |
| 136 | +1�2�[[:blank:]]*� � |
| 137 | +1�8�[^[:blank:]]*�aB28gH, � |
| 138 | +1�2�[[:cntrl:]]*� � |
| 139 | +1�8�[^[:cntrl:]]*�aB2 8gh,� |
| 140 | +#W the expected result for [[:digit:]]* is 2-3 which is wrong |
| 141 | +0�0�[[:digit:]]*�a28� |
| 142 | +2�3�[[:digit:]][[:digit:]]*�a28� |
| 143 | +1�8�[^[:digit:]]*�aB gH,� |
| 144 | +1�7�[[:graph:]]*�aB28gH, � |
| 145 | +1�3�[^[:graph:]]*� ,� |
| 146 | +1�2�[[:lower:]]*�agB� |
| 147 | +1�8�[^[:lower:]]*�B2 8H,a� |
| 148 | +1�8�[[:print:]]*�aB2 8gH, � |
| 149 | +1�2�[^[:print:]]*� � |
| 150 | +#W the expected result for [[:punct:]]* is 2-2 which is wrong |
| 151 | +0�0�[[:punct:]]*�a,2� |
| 152 | +2�3�[[:punct:]][[:punct:]]*�a,,2� |
| 153 | +1�9�[^[:punct:]]*�aB2 8gH� |
| 154 | +1�3�[[:space:]]*� � |
| 155 | +#W the expected result for [^[:space:]]* is 2-9 which is wrong |
| 156 | +0�0�[^[:space:]]*� aB28gH, � |
| 157 | +2�9�[^[:space:]][^[:space:]]*� aB28gH, � |
| 158 | +#W the expected result for [[:upper:]]* is 2-3 which is wrong |
| 159 | +0�0�[[:upper:]]*�aBH2� |
| 160 | +2�3�[[:upper:]][[:upper:]]*�aBH2� |
| 161 | +1�8�[^[:upper:]]*�a2 8g,B� |
| 162 | +#W the expected result for [[:xdigit:]]* is 2-5 which is wrong |
| 163 | +0�0�[[:xdigit:]]*�gaB28h� |
| 164 | +2�5�[[:xdigit:]][[:xdigit:]]*�gaB28h� |
| 165 | +#W the expected result for [^[:xdigit:]]* is 2-7 which is wrong |
| 166 | +2�7�[^[:xdigit:]][^[:xdigit:]]*�a gH,2� |
| 167 | +# GA127 |
| 168 | +-2�-2�[b-a]�abc� |
| 169 | +1�1�[a-c]�bbccde� |
| 170 | +2�2�[a-b]�-bc� |
| 171 | +3�3�[a-z0-9]�AB0� |
| 172 | +3�3�[^a-b]�abcde� |
| 173 | +3�3�[^a-bd-e]�dec� |
| 174 | +1�1�[]-a]�a_b� |
| 175 | +2�2�[+--]�a,b� |
| 176 | +2�2�[--/]�a.b� |
| 177 | +2�2�[^---]�-ab� |
| 178 | +3�3�[][.-.]-0]�ab0-]� |
| 179 | +3�3�[A-[.].]c]�ab]!� |
| 180 | +2�6�bc[d-w]xy�abchxyz� |
| 181 | +# GA129 |
| 182 | +1�1�[a-cd-f]�dbccde� |
| 183 | +-1�-1�[a-ce-f]�dBCCdE� |
| 184 | +2�4�b[n-zA-M]Y�absY9Z� |
| 185 | +2�4�b[n-zA-M]Y�abGY9Z� |
| 186 | +# GA130 |
| 187 | +3�3�[-xy]�ac-� |
| 188 | +2�4�c[-xy]D�ac-D+� |
| 189 | +2�2�[--/]�a.b� |
| 190 | +2�4�c[--/]D�ac.D+b� |
| 191 | +2�2�[^-ac]�abcde-� |
| 192 | +1�3�a[^-ac]c�abcde-� |
| 193 | +3�3�[xy-]�zc-� |
| 194 | +2�4�c[xy-]7�zc-786� |
| 195 | +2�2�[^ac-]�abcde-� |
| 196 | +2�4�a[^ac-]c�5abcde-� |
| 197 | +2�2�[+--]�a,b� |
| 198 | +2�4�a[+--]B�Xa,By� |
| 199 | +2�2�[^---]�-ab� |
| 200 | +4�6�X[^---]Y�X-YXaYXbY� |
| 201 | +# 2.8.3.3 BREs Matching Multiple Characters |
| 202 | +# GA131 |
| 203 | +3�4�cd�abcdeabcde� |
| 204 | +1�2�ag*b�abcde� |
| 205 | +-1�-1�[a-c][e-f]�abcdef� |
| 206 | +3�4�[a-c][e-f]�acbedf� |
| 207 | +4�8�abc*XYZ�890abXYZ#*� |
| 208 | +4�9�abc*XYZ�890abcXYZ#*� |
| 209 | +4�15�abc*XYZ�890abcccccccXYZ#*� |
| 210 | +-1�-1�abc*XYZ�890abc*XYZ#*� |
| 211 | +# GA132 |
| 212 | +2�4�\(*bc\)�a*bc� |
| 213 | +1�2�\(ab\)�abcde� |
| 214 | +1�10�\(a\(b\(c\(d\(e\(f\(g\)h\(i\(j\)\)\)\)\)\)\)\)�abcdefghijk� |
| 215 | +3�8�43\(2\(6\)*0\)AB�654320ABCD� |
| 216 | +3�9�43\(2\(7\)*0\)AB�6543270ABCD� |
| 217 | +3�12�43\(2\(7\)*0\)AB�6543277770ABCD� |
| 218 | +# GA133 |
| 219 | +1�10�\(a\(b\(c\(d\(e\(f\(g\)h\(i\(j\)\)\)\)\)\)\)\)�abcdefghijk� |
| 220 | +-1�-1�\(a\(b\(c\(d\(e\(f\(g\)h\(i\(k\)\)\)\)\)\)\)\)�abcdefghijk� |
| 221 | +# GA134 |
| 222 | +2�4�\(bb*\)�abbbc� |
| 223 | +2�2�\(bb*\)�ababbbc� |
| 224 | +1�6�a\(.*b\)�ababbbc� |
| 225 | +1�2�a\(b*\)�ababbbc� |
| 226 | +1�20�a\(.*b\)c�axcaxbbbcsxbbbbbbbbc� |
| 227 | +# GA135 |
| 228 | +1�7�\(a\(b\(c\(d\(e\)\)\)\)\)\4�abcdededede� |
| 229 | +#W POSIX does not really specify whether a\(b\)*c\1 matches acb. |
| 230 | +#W back references are supposed to expand to the last match, but what |
| 231 | +#W if there never was a match as in this case? |
| 232 | +-1�-1�a\(b\)*c\1�acb� |
| 233 | +1�11�\(a\(b\(c\(d\(e\(f\(g\)h\(i\(j\)\)\)\)\)\)\)\)\9�abcdefghijjk� |
| 234 | +# GA136 |
| 235 | +#W These two tests have the same problem as the test in GA135. No match |
| 236 | +#W of a subexpression, why should the back reference be usable? |
| 237 | +#W 1 2 a\(b\)*c\1 acb |
| 238 | +#W 4 7 a\(b\(c\(d\(f\)*\)\)\)\4�xYzabcdePQRST |
| 239 | +-1�-1�a\(b\)*c\1�acb� |
| 240 | +-1�-1�a\(b\(c\(d\(f\)*\)\)\)\4�xYzabcdePQRST� |
| 241 | +# GA137 |
| 242 | +-2�-2�\(a\(b\)\)\3�foo� |
| 243 | +-2�-2�\(a\(b\)\)\(a\(b\)\)\5�foo� |
| 244 | +# GA138 |
| 245 | +1�2�ag*b�abcde� |
| 246 | +1�10�a.*b�abababvbabc� |
| 247 | +2�5�b*c�abbbcdeabbbbbbcde� |
| 248 | +2�5�bbb*c�abbbcdeabbbbbbcde� |
| 249 | +1�5�a\(b\)*c\1�abbcbbb� |
| 250 | +-1�-1�a\(b\)*c\1�abbdbd� |
| 251 | +0�0�\([a-c]*\)\1�abcacdef� |
| 252 | +1�6�\([a-c]*\)\1�abcabcabcd� |
| 253 | +1�2�a^*b�ab� |
| 254 | +1�5�a^*b�a^^^b� |
| 255 | +# GA139 |
| 256 | +1�2�a\{2\}�aaaa� |
| 257 | +1�7�\([a-c]*\)\{0,\}�aabcaab� |
| 258 | +1�2�\(a\)\1\{1,2\}�aabc� |
| 259 | +1�3�\(a\)\1\{1,2\}�aaaabc� |
| 260 | +#W the expression \(\(a\)\1\)\{1,2\} is ill-formed, using \2 |
| 261 | +1�4�\(\(a\)\2\)\{1,2\}�aaaabc� |
| 262 | +# GA140 |
| 263 | +1�2�a\{2\}�aaaa� |
| 264 | +-1�-1�a\{2\}�abcd� |
| 265 | +0�0�a\{0\}�aaaa� |
| 266 | +1�64�a\{64\}�aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa� |
| 267 | +# GA141 |
| 268 | +1�7�\([a-c]*\)\{0,\}�aabcaab� |
| 269 | +#W the expected result for \([a-c]*\)\{2,\} is failure which isn't correct |
| 270 | +1�3�\([a-c]*\)\{2,\}�abcdefg� |
| 271 | +1�3�\([a-c]*\)\{1,\}�abcdefg� |
| 272 | +-1�-1�a\{64,\}�aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa� |
| 273 | +# GA142 |
| 274 | +1�3�a\{2,3\}�aaaa� |
| 275 | +-1�-1�a\{2,3\}�abcd� |
| 276 | +0�0�\([a-c]*\)\{0,0\}�foo� |
| 277 | +1�63�a\{1,63\}�aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa� |
| 278 | +# 2.8.3.4 BRE Precedence |
| 279 | +# GA143 |
| 280 | +#W There are numerous bugs in the original version. |
| 281 | +2�19�\^\[[[.].]]\\(\\1\\)\*\\{1,2\\}\$�a^[]\(\1\)*\{1,2\}$b� |
| 282 | +1�6�[[=*=]][[=\=]][[=]=]][[===]][[...]][[:punct:]]�*\]=.;� |
| 283 | +1�6�[$\(*\)^]*�$\()*^� |
| 284 | +1�1�[\1]�1� |
| 285 | +1�1�[\{1,2\}]�{� |
| 286 | +#W the expected result for \(*\)*\1* is 2-2 which isn't correct |
| 287 | +0�0�\(*\)*\1*�a*b*11� |
| 288 | +2�3�\(*\)*\1*b�a*b*11� |
| 289 | +#W the expected result for \(a\(b\{1,2\}\)\{1,2\}\) is 1-5 which isn't correct |
| 290 | +1�3�\(a\(b\{1,2\}\)\{1,2\}\)�abbab� |
| 291 | +1�5�\(a\(b\{1,2\}\)\)\{1,2\}�abbab� |
| 292 | +1�1�^\(^\(^a$\)$\)$�a� |
| 293 | +1�2�\(a\)\1$�aa� |
| 294 | +1�3�ab*�abb� |
| 295 | +1�4�ab\{2,4\}�abbbc� |
| 296 | +# 2.8.3.5 BRE Expression Anchoring |
| 297 | +# GA144 |
| 298 | +1�1�^a�abc� |
| 299 | +-1�-1�^b�abc� |
| 300 | +-1�-1�^[a-zA-Z]�99Nine� |
| 301 | +1�4�^[a-zA-Z]*�Nine99� |
| 302 | +# GA145(1) |
| 303 | +1�2�\(^a\)\1�aabc� |
| 304 | +-1�-1�\(^a\)\1�^a^abc� |
| 305 | +1�2�\(^^a\)�^a� |
| 306 | +1�1�\(^^\)�^^� |
| 307 | +1�3�\(^abc\)�abcdef� |
| 308 | +-1�-1�\(^def\)�abcdef� |
| 309 | +### GA145(2) GNU regex implements GA145(1) |
| 310 | +##-1�-1�\(^a\)\1�aabc� |
| 311 | +##1�4�\(^a\)\1�^a^abc� |
| 312 | +##-1�-1�\(^^a\)�^a� |
| 313 | +##1�2�\(^^\)�^^� |
| 314 | +# GA146 |
| 315 | +3�3�a$�cba� |
| 316 | +-1�-1�a$�abc� |
| 317 | +5�7�[a-z]*$�99ZZxyz� |
| 318 | +#W the expected result for [a-z]*$ is failure which isn't correct |
| 319 | +10�9�[a-z]*$�99ZZxyz99� |
| 320 | +3�3�$$�ab$� |
| 321 | +-1�-1�$$�$ab� |
| 322 | +3�3�\$$�ab$� |
| 323 | +# GA147(1) |
| 324 | +-1�-1�\(a$\)\1�bcaa� |
| 325 | +-1�-1�\(a$\)\1�ba$� |
| 326 | +-1�-1�\(ab$\)�ab$� |
| 327 | +1�2�\(ab$\)�ab� |
| 328 | +4�6�\(def$\)�abcdef� |
| 329 | +-1�-1�\(abc$\)�abcdef� |
| 330 | +### GA147(2) GNU regex implements GA147(1) |
| 331 | +##-1�-1�\(a$\)\1�bcaa� |
| 332 | +##2�5�\(a$\)\1�ba$a$� |
| 333 | +##-1�-1�\(ab$\)�ab� |
| 334 | +##1�3�\(ab$\)�ab$� |
| 335 | +# GA148 |
| 336 | +0�0�^$�� |
| 337 | +1�3�^abc$�abc� |
| 338 | +-1�-1�^xyz$�^xyz^� |
| 339 | +-1�-1�^234$�^234$� |
| 340 | +1�9�^[a-zA-Z0-9]*$�2aA3bB9zZ� |
| 341 | +-1�-1�^[a-z0-9]*$�2aA3b#B9zZ� |
|
0 commit comments