~ubuntu-branches/ubuntu/oneiric/cups/oneiric-proposed

« back to all changes in this revision

Viewing changes to vcnet/regex/tests

  • Committer: Bazaar Package Importer
  • Author(s): Martin Pitt, Till Kamppeter, Martin Pitt
  • Date: 2011-08-07 12:53:12 UTC
  • mfrom: (1.2.13 upstream)
  • Revision ID: james.westby@ubuntu.com-20110807125312-s323cyb3oqaxaemo
Tags: 1.5.0-1
[ Till Kamppeter ]
* New upstream release
* debian/patches/usb-backend-no-segfault-on-bad-device-id.patch,
  debian/patches/usb-backend-accept-old-usblp-uris.patch,
  debian/patches/use-ps2write-ghostscript-device-for-pdftops-filter.patch:
  Removed, included upstream.
* debian/patches/poppler-based-pdftops-fixes.patch,
  debian/patches/do-not-emit-ps-level-3-with-poppler.patch: Replaced patch
  by a new one only containing the parts which remain after removing the
  parts included upstream.
* debian/patches/pidfile.patch,
  debian/patches/ppd-poll-with-client-conf.patch,
  debian/patches/cups-avahi.patch,
  debian/patches/drop_unnecessary_dependencies.patch,
  debian/patches/do-not-broadcast-with-hostnames.patch,
  debian/patches/ppdc-dynamic-linking.patch,
  debian/patches/pstops-based-workflow-only-for-printing-ps-on-a-ps-printer.patch:
  Manually regenerated to adapt to upstream changes.
* debian/patches/manpage-translations.patch,
  debian/patches/rootbackends-worldreadable.patch,
  debian/patches/no-conffile-timestamp.patch,
  debian/patches/read-embedded-options-from-incoming-postscript-and-add-to-ipp-attrs.patch,
  debian/patches/cups-snmp-oids-device-id-hp-ricoh.patch,
  debian/patches/configure-default-browse-protocols.patch,
  debian/patches/logfiles_adm_readable.patch,
  debian/patches/confdirperms.patch,
  debian/patches/printer-filtering.patch,
  debian/patches/show-compile-command-lines.patch,
  debian/patches/log-debug-history-nearly-unlimited.patch:
  Refreshed using quilt.
* debian/patches/default-ripcache-size-auto.patch: Dropped, as once,
  Ghostscript 9.04 is ignoring the cache size value as it crashes easily
  otherwise (Ghostscript upstream bug #691586) and second, CUPS defaults to
  more reasonable 128 MB (now only used for imagetops).
* debian/patches/support-gzipped-charmaps.patch: Dropped, as the SBCS and
  VBCS character maps are not used any more by CUPS.
* debian/rules: Enable threads in the ./configure command line, as otherwise
  CUPS 1.5.0 does not build at all.
* debian/local/filters/pdf-filters/filter/pdftoijs.cxx,
  debian/local/filters/pdf-filters/filter/pdftoraster.cxx,
  debian/local/filters/pdf-filters/pdftoopvp/pdftoopvp.cxx,
  debian/local/filters/pdf-filters/pdftopdf/pdftopdf.cxx: Under CUPS 1.5.x.
  all programs using the PPD API of CUPS need to explicitly include
  "<cups/ppd.h>". Updated the PDF filter add-on package.
* debian/local/filters/pdf-filters/addtocups: Make the addition of the
  pdftopdf and pdftoopvp directories also work with CUPS 1.5.x.
* debian/local/filters/pdf-filters/addtocups,
  debian/local/filters/pdf-filters/removefromcups: Added a symbolic link
  cups/i18n.h, so that texttopdf builds.
* debian/cups-client.install: Install the new ipptool and its sample
  files and manpages.
* debian/cups-client.install: Commented out lines for dropped man page
  translations: ipptool, lppasswd, client.conf, ipptoolfile, cupsenable,
  lpadmin, lpinfo, cupsreject, cupsdisable, cupsaccept
* debian/cups-common.install, debian/rules: The /usr/share/cups/charmaps
  directory got removed from CUPS.
* debian/libcups2-dev.install: cups/i18n.h got renamed to
  cups/language-private.h. Install this as /usr/include/cups/i18n.h.
* debian/libcups2.symbols, debian/libcupsmime1.symbols: Updated.
* debian/cups.lintian-overrides, debian/cups.postinst, debian/cups.prerm,
  debian/cups.templates, debian/local/apparmor-profile: The "scsi"
  CUPS backend got dropped upstream, removed its treatment from these files.

[ Martin Pitt ]
* Add Serbian (Cyrillic) debconf translations, thanks Zlatan Todoric.
  (Closes: #635105)
* Add Serbian (Latin) debconf translations, thanks Zlatan Todoric.
  (Closes: #635108)
* debian/local/apparmor-profile: Allow access to serial printers on USB
  adapters. (LP: #677432)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# regular expression test set
 
2
# Lines are at least three fields, separated by one or more tabs.  "" stands
 
3
# for an empty field.  First field is an RE.  Second field is flags.  If
 
4
# C flag given, regcomp() is expected to fail, and the third field is the
 
5
# error name (minus the leading REG_).
 
6
#
 
7
# Otherwise it is expected to succeed, and the third field is the string to
 
8
# try matching it against.  If there is no fourth field, the match is
 
9
# expected to fail.  If there is a fourth field, it is the substring that
 
10
# the RE is expected to match.  If there is a fifth field, it is a comma-
 
11
# separated list of what the subexpressions should match, with - indicating
 
12
# no match for that one.  In both the fourth and fifth fields, a (sub)field
 
13
# starting with @ indicates that the (sub)expression is expected to match
 
14
# a null string followed by the stuff after the @; this provides a way to
 
15
# test where null strings match.  The character `N' in REs and strings
 
16
# is newline, `S' is space, `T' is tab, `Z' is NUL.
 
17
#
 
18
# The full list of flags:
 
19
#       -       placeholder, does nothing
 
20
#       b       RE is a BRE, not an ERE
 
21
#       &       try it as both an ERE and a BRE
 
22
#       C       regcomp() error expected, third field is error name
 
23
#       i       REG_ICASE
 
24
#       m       ("mundane") REG_NOSPEC
 
25
#       s       REG_NOSUB (not really testable)
 
26
#       n       REG_NEWLINE
 
27
#       ^       REG_NOTBOL
 
28
#       $       REG_NOTEOL
 
29
#       #       REG_STARTEND (see below)
 
30
#       p       REG_PEND
 
31
#
 
32
# For REG_STARTEND, the start/end offsets are those of the substring
 
33
# enclosed in ().
 
34
 
 
35
# basics
 
36
a               &       a       a
 
37
abc             &       abc     abc
 
38
abc|de          -       abc     abc
 
39
a|b|c           -       abc     a
 
40
 
 
41
# parentheses and perversions thereof
 
42
a(b)c           -       abc     abc
 
43
a\(b\)c         b       abc     abc
 
44
a(              C       EPAREN
 
45
a(              b       a(      a(
 
46
a\(             -       a(      a(
 
47
a\(             bC      EPAREN
 
48
a\(b            bC      EPAREN
 
49
a(b             C       EPAREN
 
50
a(b             b       a(b     a(b
 
51
# gag me with a right parenthesis -- 1003.2 goofed here (my fault, partly)
 
52
a)              -       a)      a)
 
53
)               -       )       )
 
54
# end gagging (in a just world, those *should* give EPAREN)
 
55
a)              b       a)      a)
 
56
a\)             bC      EPAREN
 
57
\)              bC      EPAREN
 
58
a()b            -       ab      ab
 
59
a\(\)b          b       ab      ab
 
60
 
 
61
# anchoring and REG_NEWLINE
 
62
^abc$           &       abc     abc
 
63
a^b             -       a^b
 
64
a^b             b       a^b     a^b
 
65
a$b             -       a$b
 
66
a$b             b       a$b     a$b
 
67
^               &       abc     @abc
 
68
$               &       abc     @
 
69
^$              &       ""      @
 
70
$^              -       ""      @
 
71
\($\)\(^\)      b       ""      @
 
72
# stop retching, those are legitimate (although disgusting)
 
73
^^              -       ""      @
 
74
$$              -       ""      @
 
75
b$              &       abNc
 
76
b$              &n      abNc    b
 
77
^b$             &       aNbNc
 
78
^b$             &n      aNbNc   b
 
79
^$              &n      aNNb    @Nb
 
80
^$              n       abc
 
81
^$              n       abcN    @
 
82
$^              n       aNNb    @Nb
 
83
\($\)\(^\)      bn      aNNb    @Nb
 
84
^^              n^      aNNb    @Nb
 
85
$$              n       aNNb    @NN
 
86
^a              ^       a
 
87
a$              $       a
 
88
^a              ^n      aNb
 
89
^b              ^n      aNb     b
 
90
a$              $n      bNa
 
91
b$              $n      bNa     b
 
92
a*(^b$)c*       -       b       b
 
93
a*\(^b$\)c*     b       b       b
 
94
 
 
95
# certain syntax errors and non-errors
 
96
|               C       EMPTY
 
97
|               b       |       |
 
98
*               C       BADRPT
 
99
*               b       *       *
 
100
+               C       BADRPT
 
101
?               C       BADRPT
 
102
""              &C      EMPTY
 
103
()              -       abc     @abc
 
104
\(\)            b       abc     @abc
 
105
a||b            C       EMPTY
 
106
|ab             C       EMPTY
 
107
ab|             C       EMPTY
 
108
(|a)b           C       EMPTY
 
109
(a|)b           C       EMPTY
 
110
(*a)            C       BADRPT
 
111
(+a)            C       BADRPT
 
112
(?a)            C       BADRPT
 
113
({1}a)          C       BADRPT
 
114
\(\{1\}a\)      bC      BADRPT
 
115
(a|*b)          C       BADRPT
 
116
(a|+b)          C       BADRPT
 
117
(a|?b)          C       BADRPT
 
118
(a|{1}b)        C       BADRPT
 
119
^*              C       BADRPT
 
120
^*              b       *       *
 
121
^+              C       BADRPT
 
122
^?              C       BADRPT
 
123
^{1}            C       BADRPT
 
124
^\{1\}          bC      BADRPT
 
125
 
 
126
# metacharacters, backslashes
 
127
a.c             &       abc     abc
 
128
a[bc]d          &       abd     abd
 
129
a\*c            &       a*c     a*c
 
130
a\\b            &       a\b     a\b
 
131
a\\\*b          &       a\*b    a\*b
 
132
a\bc            &       abc     abc
 
133
a\              &C      EESCAPE
 
134
a\\bc           &       a\bc    a\bc
 
135
\{              bC      BADRPT
 
136
a\[b            &       a[b     a[b
 
137
a[b             &C      EBRACK
 
138
# trailing $ is a peculiar special case for the BRE code
 
139
a$              &       a       a
 
140
a$              &       a$
 
141
a\$             &       a
 
142
a\$             &       a$      a$
 
143
a\\$            &       a
 
144
a\\$            &       a$
 
145
a\\$            &       a\$
 
146
a\\$            &       a\      a\
 
147
 
 
148
# back references, ugh
 
149
a\(b\)\2c       bC      ESUBREG
 
150
a\(b\1\)c       bC      ESUBREG
 
151
a\(b*\)c\1d     b       abbcbbd abbcbbd bb
 
152
a\(b*\)c\1d     b       abbcbd
 
153
a\(b*\)c\1d     b       abbcbbbd
 
154
^\(.\)\1        b       abc
 
155
a\([bc]\)\1d    b       abcdabbd        abbd    b
 
156
a\(\([bc]\)\2\)*d       b       abbccd  abbccd
 
157
a\(\([bc]\)\2\)*d       b       abbcbd
 
158
# actually, this next one probably ought to fail, but the spec is unclear
 
159
a\(\(b\)*\2\)*d         b       abbbd   abbbd
 
160
# here is a case that no NFA implementation does right
 
161
\(ab*\)[ab]*\1  b       ababaaa ababaaa a
 
162
# check out normal matching in the presence of back refs
 
163
\(a\)\1bcd      b       aabcd   aabcd
 
164
\(a\)\1bc*d     b       aabcd   aabcd
 
165
\(a\)\1bc*d     b       aabd    aabd
 
166
\(a\)\1bc*d     b       aabcccd aabcccd
 
167
\(a\)\1bc*[ce]d b       aabcccd aabcccd
 
168
^\(a\)\1b\(c\)*cd$      b       aabcccd aabcccd
 
169
 
 
170
# ordinary repetitions
 
171
ab*c            &       abc     abc
 
172
ab+c            -       abc     abc
 
173
ab?c            -       abc     abc
 
174
a\(*\)b         b       a*b     a*b
 
175
a\(**\)b        b       ab      ab
 
176
a\(***\)b       bC      BADRPT
 
177
*a              b       *a      *a
 
178
**a             b       a       a
 
179
***a            bC      BADRPT
 
180
 
 
181
# the dreaded bounded repetitions
 
182
{               &       {       {
 
183
{abc            &       {abc    {abc
 
184
{1              C       BADRPT
 
185
{1}             C       BADRPT
 
186
a{b             &       a{b     a{b
 
187
a{1}b           -       ab      ab
 
188
a\{1\}b         b       ab      ab
 
189
a{1,}b          -       ab      ab
 
190
a\{1,\}b        b       ab      ab
 
191
a{1,2}b         -       aab     aab
 
192
a\{1,2\}b       b       aab     aab
 
193
a{1             C       EBRACE
 
194
a\{1            bC      EBRACE
 
195
a{1a            C       EBRACE
 
196
a\{1a           bC      EBRACE
 
197
a{1a}           C       BADBR
 
198
a\{1a\}         bC      BADBR
 
199
a{,2}           -       a{,2}   a{,2}
 
200
a\{,2\}         bC      BADBR
 
201
a{,}            -       a{,}    a{,}
 
202
a\{,\}          bC      BADBR
 
203
a{1,x}          C       BADBR
 
204
a\{1,x\}        bC      BADBR
 
205
a{1,x           C       EBRACE
 
206
a\{1,x          bC      EBRACE
 
207
a{300}          C       BADBR
 
208
a\{300\}        bC      BADBR
 
209
a{1,0}          C       BADBR
 
210
a\{1,0\}        bC      BADBR
 
211
ab{0,0}c        -       abcac   ac
 
212
ab\{0,0\}c      b       abcac   ac
 
213
ab{0,1}c        -       abcac   abc
 
214
ab\{0,1\}c      b       abcac   abc
 
215
ab{0,3}c        -       abbcac  abbc
 
216
ab\{0,3\}c      b       abbcac  abbc
 
217
ab{1,1}c        -       acabc   abc
 
218
ab\{1,1\}c      b       acabc   abc
 
219
ab{1,3}c        -       acabc   abc
 
220
ab\{1,3\}c      b       acabc   abc
 
221
ab{2,2}c        -       abcabbc abbc
 
222
ab\{2,2\}c      b       abcabbc abbc
 
223
ab{2,4}c        -       abcabbc abbc
 
224
ab\{2,4\}c      b       abcabbc abbc
 
225
((a{1,10}){1,10}){1,10} -       a       a       a,a
 
226
 
 
227
# multiple repetitions
 
228
a**             &C      BADRPT
 
229
a++             C       BADRPT
 
230
a??             C       BADRPT
 
231
a*+             C       BADRPT
 
232
a*?             C       BADRPT
 
233
a+*             C       BADRPT
 
234
a+?             C       BADRPT
 
235
a?*             C       BADRPT
 
236
a?+             C       BADRPT
 
237
a{1}{1}         C       BADRPT
 
238
a*{1}           C       BADRPT
 
239
a+{1}           C       BADRPT
 
240
a?{1}           C       BADRPT
 
241
a{1}*           C       BADRPT
 
242
a{1}+           C       BADRPT
 
243
a{1}?           C       BADRPT
 
244
a*{b}           -       a{b}    a{b}
 
245
a\{1\}\{1\}     bC      BADRPT
 
246
a*\{1\}         bC      BADRPT
 
247
a\{1\}*         bC      BADRPT
 
248
 
 
249
# brackets, and numerous perversions thereof
 
250
a[b]c           &       abc     abc
 
251
a[ab]c          &       abc     abc
 
252
a[^ab]c         &       adc     adc
 
253
a[]b]c          &       a]c     a]c
 
254
a[[b]c          &       a[c     a[c
 
255
a[-b]c          &       a-c     a-c
 
256
a[^]b]c         &       adc     adc
 
257
a[^-b]c         &       adc     adc
 
258
a[b-]c          &       a-c     a-c
 
259
a[b             &C      EBRACK
 
260
a[]             &C      EBRACK
 
261
a[1-3]c         &       a2c     a2c
 
262
a[3-1]c         &C      ERANGE
 
263
a[1-3-5]c       &C      ERANGE
 
264
a[[.-.]--]c     &       a-c     a-c
 
265
a[1-            &C      ERANGE
 
266
a[[.            &C      EBRACK
 
267
a[[.x           &C      EBRACK
 
268
a[[.x.          &C      EBRACK
 
269
a[[.x.]         &C      EBRACK
 
270
a[[.x.]]        &       ax      ax
 
271
a[[.x,.]]       &C      ECOLLATE
 
272
a[[.one.]]b     &       a1b     a1b
 
273
a[[.notdef.]]b  &C      ECOLLATE
 
274
a[[.].]]b       &       a]b     a]b
 
275
a[[:alpha:]]c   &       abc     abc
 
276
a[[:notdef:]]c  &C      ECTYPE
 
277
a[[:            &C      EBRACK
 
278
a[[:alpha       &C      EBRACK
 
279
a[[:alpha:]     &C      EBRACK
 
280
a[[:alpha,:]    &C      ECTYPE
 
281
a[[:]:]]b       &C      ECTYPE
 
282
a[[:-:]]b       &C      ECTYPE
 
283
a[[:alph:]]     &C      ECTYPE
 
284
a[[:alphabet:]] &C      ECTYPE
 
285
[[:alnum:]]+    -       -%@a0X- a0X
 
286
[[:alpha:]]+    -       -%@aX0- aX
 
287
[[:blank:]]+    -       aSSTb   SST
 
288
[[:cntrl:]]+    -       aNTb    NT
 
289
[[:digit:]]+    -       a019b   019
 
290
[[:graph:]]+    -       Sa%bS   a%b
 
291
[[:lower:]]+    -       AabC    ab
 
292
[[:print:]]+    -       NaSbN   aSb
 
293
[[:punct:]]+    -       S%-&T   %-&
 
294
[[:space:]]+    -       aSNTb   SNT
 
295
[[:upper:]]+    -       aBCd    BC
 
296
[[:xdigit:]]+   -       p0f3Cq  0f3C
 
297
a[[=b=]]c       &       abc     abc
 
298
a[[=            &C      EBRACK
 
299
a[[=b           &C      EBRACK
 
300
a[[=b=          &C      EBRACK
 
301
a[[=b=]         &C      EBRACK
 
302
a[[=b,=]]       &C      ECOLLATE
 
303
a[[=one=]]b     &       a1b     a1b
 
304
 
 
305
# complexities
 
306
a(((b)))c       -       abc     abc
 
307
a(b|(c))d       -       abd     abd
 
308
a(b*|c)d        -       abbd    abbd
 
309
# just gotta have one DFA-buster, of course
 
310
a[ab]{20}       -       aaaaabaaaabaaaabaaaab   aaaaabaaaabaaaabaaaab
 
311
# and an inline expansion in case somebody gets tricky
 
312
a[ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab]       -       aaaaabaaaabaaaabaaaab   aaaaabaaaabaaaabaaaab
 
313
# and in case somebody just slips in an NFA...
 
314
a[ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab](wee|week)(knights|night)      -       aaaaabaaaabaaaabaaaabweeknights aaaaabaaaabaaaabaaaabweeknights
 
315
# fish for anomalies as the number of states passes 32
 
316
12345678901234567890123456789   -       a12345678901234567890123456789b 12345678901234567890123456789
 
317
123456789012345678901234567890  -       a123456789012345678901234567890b        123456789012345678901234567890
 
318
1234567890123456789012345678901 -       a1234567890123456789012345678901b       1234567890123456789012345678901
 
319
12345678901234567890123456789012        -       a12345678901234567890123456789012b      12345678901234567890123456789012
 
320
123456789012345678901234567890123       -       a123456789012345678901234567890123b     123456789012345678901234567890123
 
321
# and one really big one, beyond any plausible word width
 
322
1234567890123456789012345678901234567890123456789012345678901234567890  -       a1234567890123456789012345678901234567890123456789012345678901234567890b        1234567890123456789012345678901234567890123456789012345678901234567890
 
323
# fish for problems as brackets go past 8
 
324
[ab][cd][ef][gh][ij][kl][mn]    -       xacegikmoq      acegikm
 
325
[ab][cd][ef][gh][ij][kl][mn][op]        -       xacegikmoq      acegikmo
 
326
[ab][cd][ef][gh][ij][kl][mn][op][qr]    -       xacegikmoqy     acegikmoq
 
327
[ab][cd][ef][gh][ij][kl][mn][op][q]     -       xacegikmoqy     acegikmoq
 
328
 
 
329
# subtleties of matching
 
330
abc             &       xabcy   abc
 
331
a\(b\)?c\1d     b       acd
 
332
aBc             i       Abc     Abc
 
333
a[Bc]*d         i       abBCcd  abBCcd
 
334
0[[:upper:]]1   &i      0a1     0a1
 
335
0[[:lower:]]1   &i      0A1     0A1
 
336
a[^b]c          &i      abc
 
337
a[^b]c          &i      aBc
 
338
a[^b]c          &i      adc     adc
 
339
[a]b[c]         -       abc     abc
 
340
[a]b[a]         -       aba     aba
 
341
[abc]b[abc]     -       abc     abc
 
342
[abc]b[abd]     -       abd     abd
 
343
a(b?c)+d        -       accd    accd
 
344
(wee|week)(knights|night)       -       weeknights      weeknights
 
345
(we|wee|week|frob)(knights|night|day)   -       weeknights      weeknights
 
346
a[bc]d          -       xyzaaabcaababdacd       abd
 
347
a[ab]c          -       aaabc   abc
 
348
abc             s       abc     abc
 
349
a*              &       b       @b
 
350
 
 
351
# Let's have some fun -- try to match a C comment.
 
352
# first the obvious, which looks okay at first glance...
 
353
/\*.*\*/        -       /*x*/   /*x*/
 
354
# but...
 
355
/\*.*\*/        -       /*x*/y/*z*/     /*x*/y/*z*/
 
356
# okay, we must not match */ inside; try to do that...
 
357
/\*([^*]|\*[^/])*\*/    -       /*x*/   /*x*/
 
358
/\*([^*]|\*[^/])*\*/    -       /*x*/y/*z*/     /*x*/
 
359
# but...
 
360
/\*([^*]|\*[^/])*\*/    -       /*x**/y/*z*/    /*x**/y/*z*/
 
361
# and a still fancier version, which does it right (I think)...
 
362
/\*([^*]|\*+[^*/])*\*+/ -       /*x*/   /*x*/
 
363
/\*([^*]|\*+[^*/])*\*+/ -       /*x*/y/*z*/     /*x*/
 
364
/\*([^*]|\*+[^*/])*\*+/ -       /*x**/y/*z*/    /*x**/
 
365
/\*([^*]|\*+[^*/])*\*+/ -       /*x****/y/*z*/  /*x****/
 
366
/\*([^*]|\*+[^*/])*\*+/ -       /*x**x*/y/*z*/  /*x**x*/
 
367
/\*([^*]|\*+[^*/])*\*+/ -       /*x***x/y/*z*/  /*x***x/y/*z*/
 
368
 
 
369
# subexpressions
 
370
.*              -       abc     abc     -
 
371
a(b)(c)d        -       abcd    abcd    b,c
 
372
a(((b)))c       -       abc     abc     b,b,b
 
373
a(b|(c))d       -       abd     abd     b,-
 
374
a(b*|c|e)d      -       abbd    abbd    bb
 
375
a(b*|c|e)d      -       acd     acd     c
 
376
a(b*|c|e)d      -       ad      ad      @d
 
377
a(b?)c          -       abc     abc     b
 
378
a(b?)c          -       ac      ac      @c
 
379
a(b+)c          -       abc     abc     b
 
380
a(b+)c          -       abbbc   abbbc   bbb
 
381
a(b*)c          -       ac      ac      @c
 
382
(a|ab)(bc([de]+)f|cde)  -       abcdef  abcdef  a,bcdef,de
 
383
# the regression tester only asks for 9 subexpressions
 
384
a(b)(c)(d)(e)(f)(g)(h)(i)(j)k   -       abcdefghijk     abcdefghijk     b,c,d,e,f,g,h,i,j
 
385
a(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)l        -       abcdefghijkl    abcdefghijkl    b,c,d,e,f,g,h,i,j,k
 
386
a([bc]?)c       -       abc     abc     b
 
387
a([bc]?)c       -       ac      ac      @c
 
388
a([bc]+)c       -       abc     abc     b
 
389
a([bc]+)c       -       abcc    abcc    bc
 
390
a([bc]+)bc      -       abcbc   abcbc   bc
 
391
a(bb+|b)b       -       abb     abb     b
 
392
a(bbb+|bb+|b)b  -       abb     abb     b
 
393
a(bbb+|bb+|b)b  -       abbb    abbb    bb
 
394
a(bbb+|bb+|b)bb -       abbb    abbb    b
 
395
(.*).*          -       abcdef  abcdef  abcdef
 
396
(a*)*           -       bc      @b      @b
 
397
 
 
398
# do we get the right subexpression when it is used more than once?
 
399
a(b|c)*d        -       ad      ad      -
 
400
a(b|c)*d        -       abcd    abcd    c
 
401
a(b|c)+d        -       abd     abd     b
 
402
a(b|c)+d        -       abcd    abcd    c
 
403
a(b|c?)+d       -       ad      ad      @d
 
404
a(b|c?)+d       -       abcd    abcd    @d
 
405
a(b|c){0,0}d    -       ad      ad      -
 
406
a(b|c){0,1}d    -       ad      ad      -
 
407
a(b|c){0,1}d    -       abd     abd     b
 
408
a(b|c){0,2}d    -       ad      ad      -
 
409
a(b|c){0,2}d    -       abcd    abcd    c
 
410
a(b|c){0,}d     -       ad      ad      -
 
411
a(b|c){0,}d     -       abcd    abcd    c
 
412
a(b|c){1,1}d    -       abd     abd     b
 
413
a(b|c){1,1}d    -       acd     acd     c
 
414
a(b|c){1,2}d    -       abd     abd     b
 
415
a(b|c){1,2}d    -       abcd    abcd    c
 
416
a(b|c){1,}d     -       abd     abd     b
 
417
a(b|c){1,}d     -       abcd    abcd    c
 
418
a(b|c){2,2}d    -       acbd    acbd    b
 
419
a(b|c){2,2}d    -       abcd    abcd    c
 
420
a(b|c){2,4}d    -       abcd    abcd    c
 
421
a(b|c){2,4}d    -       abcbd   abcbd   b
 
422
a(b|c){2,4}d    -       abcbcd  abcbcd  c
 
423
a(b|c){2,}d     -       abcd    abcd    c
 
424
a(b|c){2,}d     -       abcbd   abcbd   b
 
425
a(b+|((c)*))+d  -       abd     abd     @d,@d,-
 
426
a(b+|((c)*))+d  -       abcd    abcd    @d,@d,-
 
427
 
 
428
# check out the STARTEND option
 
429
[abc]           &#      a(b)c   b
 
430
[abc]           &#      a(d)c
 
431
[abc]           &#      a(bc)d  b
 
432
[abc]           &#      a(dc)d  c
 
433
.               &#      a()c
 
434
b.*c            &#      b(bc)c  bc
 
435
b.*             &#      b(bc)c  bc
 
436
.*c             &#      b(bc)c  bc
 
437
 
 
438
# plain strings, with the NOSPEC flag
 
439
abc             m       abc     abc
 
440
abc             m       xabcy   abc
 
441
abc             m       xyz
 
442
a*b             m       aba*b   a*b
 
443
a*b             m       ab
 
444
""              mC      EMPTY
 
445
 
 
446
# cases involving NULs
 
447
aZb             &       a       a
 
448
aZb             &p      a
 
449
aZb             &p#     (aZb)   aZb
 
450
aZ*b            &p#     (ab)    ab
 
451
a.b             &#      (aZb)   aZb
 
452
a.*             &#      (aZb)c  aZb
 
453
 
 
454
# word boundaries (ick)
 
455
[[:<:]]a        &       a       a
 
456
[[:<:]]a        &       ba
 
457
[[:<:]]a        &       -a      a
 
458
a[[:>:]]        &       a       a
 
459
a[[:>:]]        &       ab
 
460
a[[:>:]]        &       a-      a
 
461
[[:<:]]a.c[[:>:]]       &       axcd-dayc-dazce-abc     abc
 
462
[[:<:]]a.c[[:>:]]       &       axcd-dayc-dazce-abc-q   abc
 
463
[[:<:]]a.c[[:>:]]       &       axc-dayc-dazce-abc      axc
 
464
[[:<:]]b.c[[:>:]]       &       a_bxc-byc_d-bzc-q       bzc
 
465
[[:<:]].x..[[:>:]]      &       y_xa_-_xb_y-_xc_-axdc   _xc_
 
466
[[:<:]]a_b[[:>:]]       &       x_a_b
 
467
 
 
468
# past problems, and suspected problems
 
469
(A[1])|(A[2])|(A[3])|(A[4])|(A[5])|(A[6])|(A[7])|(A[8])|(A[9])|(A[A])   -       A1      A1
 
470
abcdefghijklmnop        i       abcdefghijklmnop        abcdefghijklmnop
 
471
abcdefghijklmnopqrstuv  i       abcdefghijklmnopqrstuv  abcdefghijklmnopqrstuv
 
472
(ALAK)|(ALT[AB])|(CC[123]1)|(CM[123]1)|(GAMC)|(LC[23][EO ])|(SEM[1234])|(SL[ES][12])|(SLWW)|(SLF )|(SLDT)|(VWH[12])|(WH[34][EW])|(WP1[ESN])     -       CC11    CC11
 
473
CC[13]1|a{21}[23][EO][123][Es][12]a{15}aa[34][EW]aaaaaaa[X]a    -       CC11    CC11
 
474
Char \([a-z0-9_]*\)\[.* b       Char xyz[k      Char xyz[k      xyz
 
475
a?b     -       ab      ab
 
476
-\{0,1\}[0-9]*$ b       -5      -5
 
477
a*a*a*a*a*a*a*  &       aaaaaa  aaaaaa