]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/regex/test/regress/test_simple_repeats.cpp
6 * Use, modification and distribution are subject to the
7 * Boost Software License, Version 1.0. (See accompanying file
8 * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
15 #pragma warning(disable:4127)
18 void test_simple_repeats2 ();
20 void test_simple_repeats ()
22 using namespace boost :: regex_constants
;
24 TEST_REGEX_SEARCH ( "a*" , perl
, "b" , match_default
, make_array ( 0 , 0 , - 2 , 1 , 1 , - 2 , - 2 ));
25 TEST_REGEX_SEARCH ( "ab*" , perl
, "ab" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
26 TEST_REGEX_SEARCH ( "ab*" , basic
, "ab" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
27 TEST_REGEX_SEARCH ( "ab*" , perl
, "sssabbbbbbsss" , match_default
, make_array ( 3 , 10 , - 2 , - 2 ));
28 TEST_REGEX_SEARCH ( "ab*c*" , perl
, "a" , match_default
, make_array ( 0 , 1 , - 2 , - 2 ));
29 TEST_REGEX_SEARCH ( "ab*c*" , perl
, "abbb" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
30 TEST_REGEX_SEARCH ( "ab*c*" , perl
, "accc" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
31 TEST_REGEX_SEARCH ( "ab*c*" , perl
, "abbcc" , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
32 TEST_REGEX_SEARCH ( "*a" , basic
, "*a" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
33 TEST_REGEX_SEARCH ( "^*a" , basic
, "*a" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
34 TEST_INVALID_REGEX ( "*a" , perl
);
35 TEST_INVALID_REGEX ( " \\ <*" , perl
);
36 TEST_INVALID_REGEX ( " \\ >*" , perl
);
37 TEST_REGEX_SEARCH ( " \n *" , perl
, " \n\n " , match_default
, make_array ( 0 , 2 , - 2 , 2 , 2 , - 2 , - 2 ));
38 TEST_REGEX_SEARCH ( " \\ **" , perl
, "**" , match_default
, make_array ( 0 , 2 , - 2 , 2 , 2 , - 2 , - 2 ));
39 TEST_REGEX_SEARCH ( " \\ *" , perl
, "*" , match_default
, make_array ( 0 , 1 , - 2 , - 2 ));
40 TEST_REGEX_SEARCH ( "(ab)*" , perl
, "abab" , match_default
, make_array ( 0 , 4 , 2 , 4 , - 2 , 4 , 4 , - 2 , - 2 ));
42 TEST_INVALID_REGEX ( "(*)" , perl
);
43 TEST_INVALID_REGEX ( "(*)" , boost :: regex :: extended
);
44 TEST_INVALID_REGEX ( " \\ (* \\ )" , basic
);
45 TEST_INVALID_REGEX ( "^*" , perl
);
46 TEST_INVALID_REGEX ( "^*" , boost :: regex :: extended
);
47 TEST_INVALID_REGEX ( "$*" , perl
);
48 TEST_INVALID_REGEX ( "$*" , boost :: regex :: extended
);
49 TEST_INVALID_REGEX ( "$*" , basic
);
50 TEST_INVALID_REGEX ( " \\ b*" , perl
);
51 TEST_INVALID_REGEX ( " \\ B*" , perl
);
52 TEST_INVALID_REGEX ( " \\ A*" , perl
);
53 TEST_INVALID_REGEX ( " \\ z*" , perl
);
54 TEST_INVALID_REGEX ( " \\ Z*" , perl
);
55 TEST_INVALID_REGEX ( " \\ A*" , perl
);
56 TEST_INVALID_REGEX ( "a|*" , perl
);
57 TEST_INVALID_REGEX ( "a|*" , boost :: regex :: extended
);
58 TEST_INVALID_REGEX ( "(+)" , perl
);
59 TEST_INVALID_REGEX ( "(+)" , boost :: regex :: extended
);
60 TEST_INVALID_REGEX ( "^+" , perl
);
61 TEST_INVALID_REGEX ( "^+" , boost :: regex :: extended
);
62 TEST_INVALID_REGEX ( "$+" , perl
);
63 TEST_INVALID_REGEX ( "$+" , boost :: regex :: extended
);
64 TEST_INVALID_REGEX ( " \\ b+" , perl
);
65 TEST_INVALID_REGEX ( " \\ B+" , perl
);
66 TEST_INVALID_REGEX ( " \\ A+" , perl
);
67 TEST_INVALID_REGEX ( " \\ z+" , perl
);
68 TEST_INVALID_REGEX ( " \\ Z+" , perl
);
69 TEST_INVALID_REGEX ( " \\ A+" , perl
);
70 TEST_INVALID_REGEX ( "a|+" , perl
);
71 TEST_INVALID_REGEX ( "a|+" , boost :: regex :: extended
);
72 TEST_INVALID_REGEX ( "(?)" , perl
);
73 TEST_INVALID_REGEX ( "(?)" , boost :: regex :: extended
);
74 TEST_INVALID_REGEX ( "^?" , perl
);
75 TEST_INVALID_REGEX ( "^?" , boost :: regex :: extended
);
76 TEST_INVALID_REGEX ( "$?" , perl
);
77 TEST_INVALID_REGEX ( "$?" , boost :: regex :: extended
);
78 TEST_INVALID_REGEX ( " \\ b?" , perl
);
79 TEST_INVALID_REGEX ( " \\ B?" , perl
);
80 TEST_INVALID_REGEX ( " \\ A?" , perl
);
81 TEST_INVALID_REGEX ( " \\ z?" , perl
);
82 TEST_INVALID_REGEX ( " \\ Z?" , perl
);
83 TEST_INVALID_REGEX ( " \\ A?" , perl
);
84 TEST_INVALID_REGEX ( "a|?" , perl
);
85 TEST_INVALID_REGEX ( "a|?" , boost :: regex :: extended
);
86 TEST_INVALID_REGEX ( "({1,2})" , perl
);
87 TEST_INVALID_REGEX ( "({1,2})" , boost :: regex :: extended
);
88 TEST_INVALID_REGEX ( "^{1,2}" , perl
);
89 TEST_INVALID_REGEX ( "^{1,2}" , boost :: regex :: extended
);
90 TEST_INVALID_REGEX ( "${1,2}" , perl
);
91 TEST_INVALID_REGEX ( "${1,2}" , boost :: regex :: extended
);
92 TEST_INVALID_REGEX ( " \\ b{1,2}" , perl
);
93 TEST_INVALID_REGEX ( " \\ B{1,2}" , perl
);
94 TEST_INVALID_REGEX ( " \\ A{1,2}" , perl
);
95 TEST_INVALID_REGEX ( " \\ z{1,2}" , perl
);
96 TEST_INVALID_REGEX ( " \\ Z{1,2}" , perl
);
97 TEST_INVALID_REGEX ( " \\ A{1,2}" , perl
);
98 TEST_INVALID_REGEX ( "a|{1,2}" , perl
);
99 TEST_INVALID_REGEX ( "a|{1,2}" , boost :: regex :: extended
);
101 // now try operator + :
102 TEST_REGEX_SEARCH ( "ab+" , perl
, "a" , match_default
, make_array (- 2 , - 2 ));
103 TEST_REGEX_SEARCH ( "ab+" , perl
, "ab" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
104 TEST_REGEX_SEARCH ( "ab+" , perl
, "sssabbbbbbsss" , match_default
, make_array ( 3 , 10 , - 2 , - 2 ));
105 TEST_REGEX_SEARCH ( "ab+c+" , perl
, "abbb" , match_default
, make_array (- 2 , - 2 ));
106 TEST_REGEX_SEARCH ( "ab+c+" , perl
, "accc" , match_default
, make_array (- 2 , - 2 ));
107 TEST_REGEX_SEARCH ( "ab+c+" , perl
, "abbcc" , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
108 TEST_INVALID_REGEX ( "+a" , perl
);
109 TEST_INVALID_REGEX ( " \\ <+" , perl
);
110 TEST_INVALID_REGEX ( " \\ >+" , perl
);
111 TEST_REGEX_SEARCH ( " \n +" , perl
, " \n\n " , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
112 TEST_REGEX_SEARCH ( " \\ +" , perl
, "+" , match_default
, make_array ( 0 , 1 , - 2 , - 2 ));
113 TEST_REGEX_SEARCH ( " \\ +" , perl
, "++" , match_default
, make_array ( 0 , 1 , - 2 , 1 , 2 , - 2 , - 2 ));
114 TEST_REGEX_SEARCH ( " \\ ++" , perl
, "++" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
116 TEST_REGEX_SEARCH ( "+" , basic
| bk_plus_qm
, "+" , match_default
, make_array ( 0 , 1 , - 2 , - 2 ));
117 TEST_INVALID_REGEX ( " \\ +" , basic
| bk_plus_qm
);
118 TEST_REGEX_SEARCH ( "a \\ +" , basic
| bk_plus_qm
, "aa" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
120 // now try operator ?
121 TEST_REGEX_SEARCH ( "a?" , perl
, "b" , match_default
, make_array ( 0 , 0 , - 2 , 1 , 1 , - 2 , - 2 ));
122 TEST_REGEX_SEARCH ( "ab?" , perl
, "a" , match_default
, make_array ( 0 , 1 , - 2 , - 2 ));
123 TEST_REGEX_SEARCH ( "ab?" , perl
, "ab" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
124 TEST_REGEX_SEARCH ( "ab?" , perl
, "sssabbbbbbsss" , match_default
, make_array ( 3 , 5 , - 2 , - 2 ));
125 TEST_REGEX_SEARCH ( "ab?c?" , perl
, "a" , match_default
, make_array ( 0 , 1 , - 2 , - 2 ));
126 TEST_REGEX_SEARCH ( "ab?c?" , perl
, "abbb" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
127 TEST_REGEX_SEARCH ( "ab?c?" , perl
, "accc" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
128 TEST_REGEX_SEARCH ( "ab?c?" , perl
, "abcc" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
129 TEST_INVALID_REGEX ( "?a" , perl
);
130 TEST_INVALID_REGEX ( " \\ <?" , perl
);
131 TEST_INVALID_REGEX ( " \\ >?" , perl
);
132 TEST_REGEX_SEARCH ( " \n ?" , perl
, " \n\n " , match_default
, make_array ( 0 , 1 , - 2 , 1 , 2 , - 2 , 2 , 2 , - 2 , - 2 ));
133 TEST_REGEX_SEARCH ( " \\ ?" , perl
, "?" , match_default
, make_array ( 0 , 1 , - 2 , - 2 ));
134 TEST_REGEX_SEARCH ( " \\ ?" , perl
, "?" , match_default
, make_array ( 0 , 1 , - 2 , - 2 ));
135 TEST_REGEX_SEARCH ( " \\ ??" , perl
, "??" , match_default
, make_array ( 0 , 1 , - 2 , 1 , 2 , - 2 , 2 , 2 , - 2 , - 2 ));
136 TEST_REGEX_SEARCH ( "?" , basic
| bk_plus_qm
, "?" , match_default
, make_array ( 0 , 1 , - 2 , - 2 ));
137 TEST_INVALID_REGEX ( " \\ ?" , basic
| bk_plus_qm
);
138 TEST_REGEX_SEARCH ( "a \\ ?" , basic
| bk_plus_qm
, "aa" , match_default
, make_array ( 0 , 1 , - 2 , 1 , 2 , - 2 , 2 , 2 , - 2 , - 2 ));
139 TEST_REGEX_SEARCH ( "a \\ ?" , basic
| bk_plus_qm
, "b" , match_default
, make_array ( 0 , 0 , - 2 , 1 , 1 , - 2 , - 2 ));
141 TEST_REGEX_SEARCH ( "a?" , basic
, "a?" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
142 TEST_REGEX_SEARCH ( "a+" , basic
, "a+" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
143 TEST_REGEX_SEARCH ( "a \\ ?" , basic
, "a?" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
144 TEST_REGEX_SEARCH ( "a \\ +" , basic
, "a+" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
146 // now try operator {}
147 TEST_REGEX_SEARCH ( "a{2}" , perl
, "a" , match_default
, make_array (- 2 , - 2 ));
148 TEST_REGEX_SEARCH ( "a{2}" , perl
, "aa" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
149 TEST_REGEX_SEARCH ( "a{2}" , perl
, "aaa" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
150 TEST_REGEX_SEARCH ( "a{2,}" , perl
, "a" , match_default
, make_array (- 2 , - 2 ));
151 TEST_REGEX_SEARCH ( "a{2,}" , perl
, "aa" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
152 TEST_REGEX_SEARCH ( "a{2,}" , perl
, "aaaaa" , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
153 TEST_REGEX_SEARCH ( "a{2,4}" , perl
, "a" , match_default
, make_array (- 2 , - 2 ));
154 TEST_REGEX_SEARCH ( "a{2,4}" , perl
, "aa" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
155 TEST_REGEX_SEARCH ( "a{2,4}" , perl
, "aaa" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
156 TEST_REGEX_SEARCH ( "a{2,4}" , perl
, "aaaa" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
157 TEST_REGEX_SEARCH ( "a{2,4}" , perl
, "aaaaa" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
158 TEST_REGEX_SEARCH ( "a{ 2 , 4 }" , perl
, "aaaaa" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
159 TEST_REGEX_SEARCH ( "a{ 2 , }" , perl
, "aaaaa" , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
160 TEST_REGEX_SEARCH ( "a{ 2 }" , perl
, "aaa" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
161 TEST_REGEX_SEARCH ( "a \\ { \\ }" , perl
, "a{}" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
163 TEST_REGEX_SEARCH ( "a{2,4}?" , perl
, "a" , match_default
, make_array (- 2 , - 2 ));
164 TEST_REGEX_SEARCH ( "a{2,4}?" , perl
, "aa" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
165 TEST_REGEX_SEARCH ( "a{2,4}?" , perl
, "aaa" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
166 TEST_REGEX_SEARCH ( "a{2,4}?" , perl
, "aaaa" , match_default
, make_array ( 0 , 2 , - 2 , 2 , 4 , - 2 , - 2 ));
167 TEST_REGEX_SEARCH ( "a{2,4}?" , perl
, "aaaaa" , match_default
, make_array ( 0 , 2 , - 2 , 2 , 4 , - 2 , - 2 ));
168 TEST_REGEX_SEARCH ( "a{2,4}?$" , perl
, "aa" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
169 TEST_REGEX_SEARCH ( "a{2,4}?$" , perl
, "aaa" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
170 TEST_REGEX_SEARCH ( "a{2,4}?$" , perl
, "aaaa" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
171 TEST_REGEX_SEARCH ( "a{2,4}?$" , perl
, "aaaaa" , match_default
, make_array ( 1 , 5 , - 2 , - 2 ));
172 TEST_REGEX_SEARCH ( "^a{0,1}?$" , perl
, "aaaaa" , match_default
, make_array (- 2 , - 2 ));
173 TEST_REGEX_SEARCH ( "^(?:a){0,1}?$" , perl
, "aaaaa" , match_default
, make_array (- 2 , - 2 ));
174 TEST_REGEX_SEARCH ( "^a(?:bc)?" , perl
, "abcbc" , match_any
| match_all
, make_array (- 2 , - 2 ));
175 TEST_REGEX_SEARCH ( "a}" , perl
, "a}" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
176 TEST_REGEX_SEARCH ( "a{12b" , perl
, "a{12bc" , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
177 TEST_INVALID_REGEX ( "a{b" , boost :: regex :: extended
);
178 TEST_INVALID_REGEX ( "a}b" , boost :: regex :: extended
);
179 test_simple_repeats2 ();
182 void test_simple_repeats2 ()
184 using namespace boost :: regex_constants
;
186 TEST_REGEX_SEARCH ( "a{}" , basic
, "a{}" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
187 TEST_REGEX_SEARCH ( "a{" , basic
, "a{" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
188 TEST_REGEX_SEARCH ( "a{1" , basic
, "a{1" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
189 TEST_REGEX_SEARCH ( "a{1," , basic
, "a{1," , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
190 TEST_REGEX_SEARCH ( "a{1,2" , basic
, "a{1,2" , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
191 TEST_REGEX_SEARCH ( "a{ 1 , 2" , basic
, "a{ 1 , 2" , match_default
, make_array ( 0 , 8 , - 2 , - 2 ));
192 TEST_REGEX_SEARCH ( "a{ }" , basic
, "a{ }" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
193 TEST_REGEX_SEARCH ( "a}" , basic
, "a}" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
194 TEST_INVALID_REGEX ( "{1}" , perl
);
195 TEST_REGEX_SEARCH ( "a{b}" , basic
, "a{b}" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
196 TEST_REGEX_SEARCH ( "a{1b" , basic
, "a{1b" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
197 TEST_REGEX_SEARCH ( "a{1,b}" , basic
, "a{1,b}" , match_default
, make_array ( 0 , 6 , - 2 , - 2 ));
198 TEST_REGEX_SEARCH ( "a{1,2v}" , basic
, "a{1,2v}" , match_default
, make_array ( 0 , 7 , - 2 , - 2 ));
199 TEST_INVALID_REGEX ( "a{2,1}" , perl
);
200 // now try operator \\{\\} for POSIX basic regexes
201 TEST_REGEX_SEARCH ( "a \\ {2 \\ }" , basic
, "a" , match_default
, make_array (- 2 , - 2 ));
202 TEST_REGEX_SEARCH ( "a \\ {2 \\ }" , basic
| no_intervals
, "a{2}" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
203 TEST_REGEX_SEARCH ( "a \\ {2 \\ }" , basic
, "aa" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
204 TEST_REGEX_SEARCH ( "a \\ {2 \\ }" , basic
, "aaa" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
205 TEST_REGEX_SEARCH ( "a \\ {2, \\ }" , basic
, "a" , match_default
, make_array (- 2 , - 2 ));
206 TEST_REGEX_SEARCH ( "a \\ {2, \\ }" , basic
, "aa" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
207 TEST_REGEX_SEARCH ( "a \\ {2, \\ }" , basic
, "aaaaa" , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
208 TEST_REGEX_SEARCH ( "a \\ {2,4 \\ }" , basic
, "a" , match_default
, make_array (- 2 , - 2 ));
209 TEST_REGEX_SEARCH ( "a \\ {2,4 \\ }" , basic
, "aa" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
210 TEST_REGEX_SEARCH ( "a \\ {2,4 \\ }" , basic
, "aaa" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
211 TEST_REGEX_SEARCH ( "a \\ {2,4 \\ }" , basic
, "aaaa" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
212 TEST_REGEX_SEARCH ( "a \\ {2,4 \\ }" , basic
, "aaaaa" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
213 TEST_REGEX_SEARCH ( "a \\ { 2 , 4 \\ }" , basic
, "aaaaa" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
214 TEST_REGEX_SEARCH ( "a \\ { 2 , \\ }" , basic
, "aaaaa" , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
215 TEST_REGEX_SEARCH ( "a \\ { 2 \\ }" , basic
, "aaa" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
216 TEST_REGEX_SEARCH ( "a{}" , basic
, "a{}" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
217 TEST_INVALID_REGEX ( "a \\ { \\ }" , basic
);
218 TEST_INVALID_REGEX ( "a \\ {" , basic
);
219 TEST_INVALID_REGEX ( "a \\ {1" , basic
);
220 TEST_INVALID_REGEX ( "a \\ {1," , basic
);
221 TEST_INVALID_REGEX ( "a \\ {1, \\ " , basic
);
222 TEST_INVALID_REGEX ( "a \\ { \\ }" , basic
);
223 TEST_INVALID_REGEX ( "a \\ }" , basic
);
224 TEST_INVALID_REGEX ( " \\ {1 \\ }" , basic
);
225 TEST_INVALID_REGEX ( "a \\ {b \\ }" , basic
);
226 TEST_INVALID_REGEX ( "a \\ {1b \\ }" , basic
);
227 TEST_INVALID_REGEX ( "a \\ {1,b \\ }" , basic
);
228 TEST_INVALID_REGEX ( "a \\ {1,2v \\ }" , basic
);
229 TEST_INVALID_REGEX ( "a \\ {3,1 \\ }" , basic
);
233 void test_fast_repeats ()
235 using namespace boost :: regex_constants
;
236 // boost::regex::extended repeat checking to exercise new algorithms:
237 TEST_REGEX_SEARCH ( "ab.*xy" , perl
, "abxy_" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
238 TEST_REGEX_SEARCH ( "ab.*xy" , perl
, "ab_xy_" , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
239 TEST_REGEX_SEARCH ( "ab.*xy" , perl
, "abxy" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
240 TEST_REGEX_SEARCH ( "ab.*xy" , perl
, "ab_xy" , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
241 TEST_REGEX_SEARCH ( "ab.*" , perl
, "ab" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
242 TEST_REGEX_SEARCH ( "ab.*" , perl
, "ab__" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
243 TEST_REGEX_SEARCH ( ".*xy" , perl
, "abc" , match_default
, make_array (- 2 , - 2 ));
244 TEST_REGEX_SEARCH ( ".*?xy" , perl
, "abc" , match_default
, make_array (- 2 , - 2 ));
245 TEST_REGEX_SEARCH ( "a+?xy" , perl
, "abc" , match_default
, make_array (- 2 , - 2 ));
247 TEST_REGEX_SEARCH ( "ab.{2,5}xy" , perl
, "ab__xy_" , match_default
, make_array ( 0 , 6 , - 2 , - 2 ));
248 TEST_REGEX_SEARCH ( "ab.{2,5}xy" , perl
, "ab____xy_" , match_default
, make_array ( 0 , 8 , - 2 , - 2 ));
249 TEST_REGEX_SEARCH ( "ab.{2,5}xy" , perl
, "ab_____xy_" , match_default
, make_array ( 0 , 9 , - 2 , - 2 ));
250 TEST_REGEX_SEARCH ( "ab.{2,5}xy" , perl
, "ab__xy" , match_default
, make_array ( 0 , 6 , - 2 , - 2 ));
251 TEST_REGEX_SEARCH ( "ab.{2,5}xy" , perl
, "ab_____xy" , match_default
, make_array ( 0 , 9 , - 2 , - 2 ));
252 TEST_REGEX_SEARCH ( "ab.{2,5}" , perl
, "ab__" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
253 TEST_REGEX_SEARCH ( "ab.{2,5}" , perl
, "ab_______" , match_default
, make_array ( 0 , 7 , - 2 , - 2 ));
254 TEST_REGEX_SEARCH ( "ab.{2,5}xy" , perl
, "ab______xy" , match_default
, make_array (- 2 , - 2 ));
255 TEST_REGEX_SEARCH ( "ab.{2,5}xy" , perl
, "ab_xy" , match_default
, make_array (- 2 , - 2 ));
257 TEST_REGEX_SEARCH ( "ab.*?xy" , perl
, "abxy_" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
258 TEST_REGEX_SEARCH ( "ab.*?xy" , perl
, "ab_xy_" , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
259 TEST_REGEX_SEARCH ( "ab.*?xy" , perl
, "abxy" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
260 TEST_REGEX_SEARCH ( "ab.*?xy" , perl
, "ab_xy" , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
261 TEST_REGEX_SEARCH ( "ab.*?" , perl
, "ab" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
262 TEST_REGEX_SEARCH ( "ab.*?" , perl
, "ab__" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
264 TEST_REGEX_SEARCH ( "ab.{2,5}?xy" , perl
, "ab__xy_" , match_default
, make_array ( 0 , 6 , - 2 , - 2 ));
265 TEST_REGEX_SEARCH ( "ab.{2,5}?xy" , perl
, "ab____xy_" , match_default
, make_array ( 0 , 8 , - 2 , - 2 ));
266 TEST_REGEX_SEARCH ( "ab.{2,5}?xy" , perl
, "ab_____xy_" , match_default
, make_array ( 0 , 9 , - 2 , - 2 ));
267 TEST_REGEX_SEARCH ( "ab.{2,5}?xy" , perl
, "ab__xy" , match_default
, make_array ( 0 , 6 , - 2 , - 2 ));
268 TEST_REGEX_SEARCH ( "ab.{2,5}?xy" , perl
, "ab_____xy" , match_default
, make_array ( 0 , 9 , - 2 , - 2 ));
269 TEST_REGEX_SEARCH ( "ab.{2,5}?" , perl
, "ab__" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
270 TEST_REGEX_SEARCH ( "ab.{2,5}?" , perl
, "ab_______" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
271 TEST_REGEX_SEARCH ( "ab.{2,5}?xy" , perl
, "ab______xy" , match_default
, make_array (- 2 , - 2 ));
272 TEST_REGEX_SEARCH ( "ab.{2,5}xy" , perl
, "ab_xy" , match_default
, make_array (- 2 , - 2 ));
274 // again but with slower algorithm variant:
275 TEST_REGEX_SEARCH ( "ab.*xy" , perl
, "abxy_" , match_not_dot_newline
| match_not_dot_null
, make_array ( 0 , 4 , - 2 , - 2 ));
276 TEST_REGEX_SEARCH ( "ab.*xy" , perl
, "ab_xy_" , match_not_dot_newline
| match_not_dot_null
, make_array ( 0 , 5 , - 2 , - 2 ));
277 TEST_REGEX_SEARCH ( "ab.*xy" , perl
, "abxy" , match_not_dot_newline
| match_not_dot_null
, make_array ( 0 , 4 , - 2 , - 2 ));
278 TEST_REGEX_SEARCH ( "ab.*xy" , perl
, "ab_xy" , match_not_dot_newline
| match_not_dot_null
, make_array ( 0 , 5 , - 2 , - 2 ));
279 TEST_REGEX_SEARCH ( "ab.*" , perl
, "ab" , match_not_dot_newline
| match_not_dot_null
, make_array ( 0 , 2 , - 2 , - 2 ));
280 TEST_REGEX_SEARCH ( "ab.*" , perl
, "ab__" , match_not_dot_newline
| match_not_dot_null
, make_array ( 0 , 4 , - 2 , - 2 ));
281 TEST_REGEX_SEARCH ( ".*xy" , perl
, "abc" , match_not_dot_newline
| match_not_dot_null
, make_array (- 2 , - 2 ));
282 TEST_REGEX_SEARCH ( ".*?xy" , perl
, "abc" , match_not_dot_newline
| match_not_dot_null
, make_array (- 2 , - 2 ));
283 TEST_REGEX_SEARCH ( ".*xy" , perl
, "ab \n bc" , match_not_dot_newline
| match_not_dot_null
, make_array (- 2 , - 2 ));
284 TEST_REGEX_SEARCH ( ".*?xy" , perl
, "ax \n bc" , match_not_dot_newline
| match_not_dot_null
, make_array (- 2 , - 2 ));
286 TEST_REGEX_SEARCH ( "ab.{2,5}xy" , perl
, "ab__xy_" , match_not_dot_newline
| match_not_dot_null
, make_array ( 0 , 6 , - 2 , - 2 ));
287 TEST_REGEX_SEARCH ( "ab.{2,5}xy" , perl
, "ab____xy_" , match_not_dot_newline
| match_not_dot_null
, make_array ( 0 , 8 , - 2 , - 2 ));
288 TEST_REGEX_SEARCH ( "ab.{2,5}xy" , perl
, "ab_____xy_" , match_not_dot_newline
| match_not_dot_null
, make_array ( 0 , 9 , - 2 , - 2 ));
289 TEST_REGEX_SEARCH ( "ab.{2,5}xy" , perl
, "ab__xy" , match_not_dot_newline
| match_not_dot_null
, make_array ( 0 , 6 , - 2 , - 2 ));
290 TEST_REGEX_SEARCH ( "ab.{2,5}xy" , perl
, "ab_____xy" , match_not_dot_newline
| match_not_dot_null
, make_array ( 0 , 9 , - 2 , - 2 ));
291 TEST_REGEX_SEARCH ( "ab.{2,5}" , perl
, "ab__" , match_not_dot_newline
| match_not_dot_null
, make_array ( 0 , 4 , - 2 , - 2 ));
292 TEST_REGEX_SEARCH ( "ab.{2,5}" , perl
, "ab_______" , match_not_dot_newline
| match_not_dot_null
, make_array ( 0 , 7 , - 2 , - 2 ));
293 TEST_REGEX_SEARCH ( "ab.{2,5}xy" , perl
, "ab______xy" , match_not_dot_newline
| match_not_dot_null
, make_array (- 2 , - 2 ));
294 TEST_REGEX_SEARCH ( "ab.{2,5}xy" , perl
, "ab_xy" , match_not_dot_newline
| match_not_dot_null
, make_array (- 2 , - 2 ));
296 TEST_REGEX_SEARCH ( "ab.*?xy" , perl
, "abxy_" , match_not_dot_newline
| match_not_dot_null
, make_array ( 0 , 4 , - 2 , - 2 ));
297 TEST_REGEX_SEARCH ( "ab.*?xy" , perl
, "ab_xy_" , match_not_dot_newline
| match_not_dot_null
, make_array ( 0 , 5 , - 2 , - 2 ));
298 TEST_REGEX_SEARCH ( "ab.*?xy" , perl
, "abxy" , match_not_dot_newline
| match_not_dot_null
, make_array ( 0 , 4 , - 2 , - 2 ));
299 TEST_REGEX_SEARCH ( "ab.*?xy" , perl
, "ab_xy" , match_not_dot_newline
| match_not_dot_null
, make_array ( 0 , 5 , - 2 , - 2 ));
300 TEST_REGEX_SEARCH ( "ab.*?" , perl
, "ab" , match_not_dot_newline
| match_not_dot_null
, make_array ( 0 , 2 , - 2 , - 2 ));
301 TEST_REGEX_SEARCH ( "ab.*?" , perl
, "ab__" , match_not_dot_newline
| match_not_dot_null
, make_array ( 0 , 2 , - 2 , - 2 ));
303 TEST_REGEX_SEARCH ( "ab.{2,5}?xy" , perl
, "ab__xy_" , match_not_dot_newline
| match_not_dot_null
, make_array ( 0 , 6 , - 2 , - 2 ));
304 TEST_REGEX_SEARCH ( "ab.{2,5}?xy" , perl
, "ab____xy_" , match_not_dot_newline
| match_not_dot_null
, make_array ( 0 , 8 , - 2 , - 2 ));
305 TEST_REGEX_SEARCH ( "ab.{2,5}?xy" , perl
, "ab_____xy_" , match_not_dot_newline
| match_not_dot_null
, make_array ( 0 , 9 , - 2 , - 2 ));
306 TEST_REGEX_SEARCH ( "ab.{2,5}?xy" , perl
, "ab__xy" , match_not_dot_newline
| match_not_dot_null
, make_array ( 0 , 6 , - 2 , - 2 ));
307 TEST_REGEX_SEARCH ( "ab.{2,5}?xy" , perl
, "ab_____xy" , match_not_dot_newline
| match_not_dot_null
, make_array ( 0 , 9 , - 2 , - 2 ));
308 TEST_REGEX_SEARCH ( "ab.{2,5}?" , perl
, "ab__" , match_not_dot_newline
| match_not_dot_null
, make_array ( 0 , 4 , - 2 , - 2 ));
309 TEST_REGEX_SEARCH ( "ab.{2,5}?" , perl
, "ab_______" , match_not_dot_newline
| match_not_dot_null
, make_array ( 0 , 4 , - 2 , - 2 ));
310 TEST_REGEX_SEARCH ( "ab.{2,5}?xy" , perl
, "ab______xy" , match_not_dot_newline
| match_not_dot_null
, make_array (- 2 , - 2 ));
311 TEST_REGEX_SEARCH ( "ab.{2,5}xy" , perl
, "ab_xy" , match_not_dot_newline
| match_not_dot_null
, make_array (- 2 , - 2 ));
313 // now again for single character repeats:
314 TEST_REGEX_SEARCH ( "ab_*xy" , perl
, "abxy_" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
315 TEST_REGEX_SEARCH ( "ab_*xy" , perl
, "ab_xy_" , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
316 TEST_REGEX_SEARCH ( "ab_*xy" , perl
, "abxy" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
317 TEST_REGEX_SEARCH ( "ab_*xy" , perl
, "ab_xy" , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
318 TEST_REGEX_SEARCH ( "ab_*" , perl
, "ab" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
319 TEST_REGEX_SEARCH ( "ab_*" , perl
, "ab__" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
320 TEST_REGEX_SEARCH ( "ab_*?z" , perl
, "ab__" , match_default
, make_array (- 2 , - 2 ));
322 TEST_REGEX_SEARCH ( "ab_{2,5}xy" , perl
, "ab__xy_" , match_default
, make_array ( 0 , 6 , - 2 , - 2 ));
323 TEST_REGEX_SEARCH ( "ab_{2,5}xy" , perl
, "ab____xy_" , match_default
, make_array ( 0 , 8 , - 2 , - 2 ));
324 TEST_REGEX_SEARCH ( "ab_{2,5}xy" , perl
, "ab_____xy_" , match_default
, make_array ( 0 , 9 , - 2 , - 2 ));
325 TEST_REGEX_SEARCH ( "ab_{2,5}xy" , perl
, "ab__xy" , match_default
, make_array ( 0 , 6 , - 2 , - 2 ));
326 TEST_REGEX_SEARCH ( "ab_{2,5}xy" , perl
, "ab_____xy" , match_default
, make_array ( 0 , 9 , - 2 , - 2 ));
327 TEST_REGEX_SEARCH ( "ab_{2,5}" , perl
, "ab__" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
328 TEST_REGEX_SEARCH ( "ab_{2,5}" , perl
, "ab_______" , match_default
, make_array ( 0 , 7 , - 2 , - 2 ));
329 TEST_REGEX_SEARCH ( "ab_{2,5}xy" , perl
, "ab______xy" , match_default
, make_array (- 2 , - 2 ));
330 TEST_REGEX_SEARCH ( "ab_{2,5}xy" , perl
, "ab_xy" , match_default
, make_array (- 2 , - 2 ));
332 TEST_REGEX_SEARCH ( "ab_*?xy" , perl
, "abxy_" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
333 TEST_REGEX_SEARCH ( "ab_*?xy" , perl
, "ab_xy_" , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
334 TEST_REGEX_SEARCH ( "ab_*?xy" , perl
, "abxy" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
335 TEST_REGEX_SEARCH ( "ab_*?xy" , perl
, "ab_xy" , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
336 TEST_REGEX_SEARCH ( "ab_*?" , perl
, "ab" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
337 TEST_REGEX_SEARCH ( "ab_*?" , perl
, "ab__" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
339 TEST_REGEX_SEARCH ( "ab_{2,5}?xy" , perl
, "ab__xy_" , match_default
, make_array ( 0 , 6 , - 2 , - 2 ));
340 TEST_REGEX_SEARCH ( "ab_{2,5}?xy" , perl
, "ab____xy_" , match_default
, make_array ( 0 , 8 , - 2 , - 2 ));
341 TEST_REGEX_SEARCH ( "ab_{2,5}?xy" , perl
, "ab_____xy_" , match_default
, make_array ( 0 , 9 , - 2 , - 2 ));
342 TEST_REGEX_SEARCH ( "ab_{2,5}?xy" , perl
, "ab__xy" , match_default
, make_array ( 0 , 6 , - 2 , - 2 ));
343 TEST_REGEX_SEARCH ( "ab_{2,5}?xy" , perl
, "ab_____xy" , match_default
, make_array ( 0 , 9 , - 2 , - 2 ));
344 TEST_REGEX_SEARCH ( "ab_{2,5}?" , perl
, "ab__" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
345 TEST_REGEX_SEARCH ( "ab_{2,5}?" , perl
, "ab_______" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
346 TEST_REGEX_SEARCH ( "ab_{2,5}?xy" , perl
, "ab______xy" , match_default
, make_array (- 2 , - 2 ));
347 TEST_REGEX_SEARCH ( "ab_{2,5}xy" , perl
, "ab_xy" , match_default
, make_array (- 2 , - 2 ));
348 TEST_REGEX_SEARCH ( "(5*?).somesite" , perl
, "//555.somesite" , match_default
, make_array ( 2 , 14 , 2 , 5 , - 2 , - 2 ));
351 void test_fast_repeats2 ()
353 using namespace boost :: regex_constants
;
354 // and again for sets:
355 TEST_REGEX_SEARCH ( "ab[_,;]*xy" , perl
, "abxy_" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
356 TEST_REGEX_SEARCH ( "ab[_,;]*xy" , perl
, "ab_xy_" , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
357 TEST_REGEX_SEARCH ( "ab[_,;]*xy" , perl
, "abxy" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
358 TEST_REGEX_SEARCH ( "ab[_,;]*xy" , perl
, "ab_xy" , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
359 TEST_REGEX_SEARCH ( "ab[_,;]*" , perl
, "ab" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
360 TEST_REGEX_SEARCH ( "ab[_,;]*" , perl
, "ab__" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
361 TEST_REGEX_SEARCH ( "ab[_,;]*?xy" , perl
, "ab__z" , match_default
, make_array (- 2 , - 2 ));
362 TEST_REGEX_SEARCH ( "ab[_,;]*?z" , perl
, "ab__" , match_default
, make_array (- 2 , - 2 ));
363 TEST_REGEX_SEARCH ( "ab[_,;]*?.z" , perl
, "ab__,;,__z" , match_default
, make_array ( 0 , 10 , - 2 , - 2 ));
364 TEST_REGEX_SEARCH ( "ab[_,;]*?.z" , perl
, "ab__,;,__y" , match_default
, make_array (- 2 , - 2 ));
366 TEST_REGEX_SEARCH ( "ab[_,;]{2,5}xy" , perl
, "ab__xy_" , match_default
, make_array ( 0 , 6 , - 2 , - 2 ));
367 TEST_REGEX_SEARCH ( "ab[_,;]{2,5}xy" , perl
, "ab____xy_" , match_default
, make_array ( 0 , 8 , - 2 , - 2 ));
368 TEST_REGEX_SEARCH ( "ab[_,;]{2,5}xy" , perl
, "ab_____xy_" , match_default
, make_array ( 0 , 9 , - 2 , - 2 ));
369 TEST_REGEX_SEARCH ( "ab[_,;]{2,5}xy" , perl
, "ab__xy" , match_default
, make_array ( 0 , 6 , - 2 , - 2 ));
370 TEST_REGEX_SEARCH ( "ab[_,;]{2,5}xy" , perl
, "ab_____xy" , match_default
, make_array ( 0 , 9 , - 2 , - 2 ));
371 TEST_REGEX_SEARCH ( "ab[_,;]{2,5}" , perl
, "ab__" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
372 TEST_REGEX_SEARCH ( "ab[_,;]{2,5}" , perl
, "ab_______" , match_default
, make_array ( 0 , 7 , - 2 , - 2 ));
373 TEST_REGEX_SEARCH ( "ab[_,;]{2,5}xy" , perl
, "ab______xy" , match_default
, make_array (- 2 , - 2 ));
374 TEST_REGEX_SEARCH ( "ab[_,;]{2,5}xy" , perl
, "ab_xy" , match_default
, make_array (- 2 , - 2 ));
376 TEST_REGEX_SEARCH ( "ab[_,;]*?xy" , perl
, "abxy_" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
377 TEST_REGEX_SEARCH ( "ab[_,;]*?xy" , perl
, "ab_xy_" , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
378 TEST_REGEX_SEARCH ( "ab[_,;]*?xy" , perl
, "abxy" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
379 TEST_REGEX_SEARCH ( "ab[_,;]*?xy" , perl
, "ab_xy" , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
380 TEST_REGEX_SEARCH ( "ab[_,;]*?" , perl
, "ab" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
381 TEST_REGEX_SEARCH ( "ab[_,;]*?" , perl
, "ab__" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
383 TEST_REGEX_SEARCH ( "ab[_,;]{2,5}?xy" , perl
, "ab__xy_" , match_default
, make_array ( 0 , 6 , - 2 , - 2 ));
384 TEST_REGEX_SEARCH ( "ab[_,;]{2,5}?xy" , perl
, "ab____xy_" , match_default
, make_array ( 0 , 8 , - 2 , - 2 ));
385 TEST_REGEX_SEARCH ( "ab[_,;]{2,5}?xy" , perl
, "ab_____xy_" , match_default
, make_array ( 0 , 9 , - 2 , - 2 ));
386 TEST_REGEX_SEARCH ( "ab[_,;]{2,5}?xy" , perl
, "ab__xy" , match_default
, make_array ( 0 , 6 , - 2 , - 2 ));
387 TEST_REGEX_SEARCH ( "ab[_,;]{2,5}?xy" , perl
, "ab_____xy" , match_default
, make_array ( 0 , 9 , - 2 , - 2 ));
388 TEST_REGEX_SEARCH ( "ab[_,;]{2,5}?" , perl
, "ab__" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
389 TEST_REGEX_SEARCH ( "ab[_,;]{2,5}?" , perl
, "ab_______" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
390 TEST_REGEX_SEARCH ( "ab[_,;]{2,5}?xy" , perl
, "ab______xy" , match_default
, make_array (- 2 , - 2 ));
391 TEST_REGEX_SEARCH ( "ab[_,;]{2,5}xy" , perl
, "ab_xy" , match_default
, make_array (- 2 , - 2 ));
393 // and again for tricky sets with digraphs:
394 TEST_REGEX_SEARCH ( "ab[_[.ae.]]*xy" , perl
, "abxy_" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
395 TEST_REGEX_SEARCH ( "ab[_[.ae.]]*xy" , perl
, "ab_xy_" , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
396 TEST_REGEX_SEARCH ( "ab[_[.ae.]]*xy" , perl
, "abxy" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
397 TEST_REGEX_SEARCH ( "ab[_[.ae.]]*xy" , perl
, "ab_xy" , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
398 TEST_REGEX_SEARCH ( "ab[_[.ae.]]*" , perl
, "ab" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
399 TEST_REGEX_SEARCH ( "ab[_[.ae.]]*" , perl
, "ab__" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
401 TEST_REGEX_SEARCH ( "ab[_[.ae.]]{2,5}xy" , perl
, "ab__xy_" , match_default
, make_array ( 0 , 6 , - 2 , - 2 ));
402 TEST_REGEX_SEARCH ( "ab[_[.ae.]]{2,5}xy" , perl
, "ab____xy_" , match_default
, make_array ( 0 , 8 , - 2 , - 2 ));
403 TEST_REGEX_SEARCH ( "ab[_[.ae.]]{2,5}xy" , perl
, "ab_____xy_" , match_default
, make_array ( 0 , 9 , - 2 , - 2 ));
404 TEST_REGEX_SEARCH ( "ab[_[.ae.]]{2,5}xy" , perl
, "ab__xy" , match_default
, make_array ( 0 , 6 , - 2 , - 2 ));
405 TEST_REGEX_SEARCH ( "ab[_[.ae.]]{2,5}xy" , perl
, "ab_____xy" , match_default
, make_array ( 0 , 9 , - 2 , - 2 ));
406 TEST_REGEX_SEARCH ( "ab[_[.ae.]]{2,5}" , perl
, "ab__" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
407 TEST_REGEX_SEARCH ( "ab[_[.ae.]]{2,5}" , perl
, "ab_______" , match_default
, make_array ( 0 , 7 , - 2 , - 2 ));
408 TEST_REGEX_SEARCH ( "ab[_[.ae.]]{2,5}xy" , perl
, "ab______xy" , match_default
, make_array (- 2 , - 2 ));
409 TEST_REGEX_SEARCH ( "ab[_[.ae.]]{2,5}xy" , perl
, "ab_xy" , match_default
, make_array (- 2 , - 2 ));
411 TEST_REGEX_SEARCH ( "ab[_[.ae.]]*?xy" , perl
, "abxy_" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
412 TEST_REGEX_SEARCH ( "ab[_[.ae.]]*?xy" , perl
, "ab_xy_" , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
413 TEST_REGEX_SEARCH ( "ab[_[.ae.]]*?xy" , perl
, "abxy" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
414 TEST_REGEX_SEARCH ( "ab[_[.ae.]]*?xy" , perl
, "ab_xy" , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
415 TEST_REGEX_SEARCH ( "ab[_[.ae.]]*?" , perl
, "ab" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
416 TEST_REGEX_SEARCH ( "ab[_[.ae.]]*?" , perl
, "ab__" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
418 TEST_REGEX_SEARCH ( "ab[_[.ae.]]{2,5}?xy" , perl
, "ab__xy_" , match_default
, make_array ( 0 , 6 , - 2 , - 2 ));
419 TEST_REGEX_SEARCH ( "ab[_[.ae.]]{2,5}?xy" , perl
, "ab____xy_" , match_default
, make_array ( 0 , 8 , - 2 , - 2 ));
420 TEST_REGEX_SEARCH ( "ab[_[.ae.]]{2,5}?xy" , perl
, "ab_____xy_" , match_default
, make_array ( 0 , 9 , - 2 , - 2 ));
421 TEST_REGEX_SEARCH ( "ab[_[.ae.]]{2,5}?xy" , perl
, "ab__xy" , match_default
, make_array ( 0 , 6 , - 2 , - 2 ));
422 TEST_REGEX_SEARCH ( "ab[_[.ae.]]{2,5}?xy" , perl
, "ab_____xy" , match_default
, make_array ( 0 , 9 , - 2 , - 2 ));
423 TEST_REGEX_SEARCH ( "ab[_[.ae.]]{2,5}?" , perl
, "ab__" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
424 TEST_REGEX_SEARCH ( "ab[_[.ae.]]{2,5}?" , perl
, "ab_______" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
425 TEST_REGEX_SEARCH ( "ab[_[.ae.]]{2,5}?xy" , perl
, "ab______xy" , match_default
, make_array (- 2 , - 2 ));
426 TEST_REGEX_SEARCH ( "ab[_[.ae.]]{2,5}xy" , perl
, "ab_xy" , match_default
, make_array (- 2 , - 2 ));
427 TEST_REGEX_SEARCH ( "([5[.ae.]]*?).somesite" , perl
, "//555.somesite" , match_default
, make_array ( 2 , 14 , 2 , 5 , - 2 , - 2 ));
429 TEST_REGEX_SEARCH ( "A[^B]*?B.*?C" , perl
, "AxBxxxx" , match_default
| match_partial
, make_array ( 0 , 7 , - 2 , - 2 ));
430 TEST_REGEX_SEARCH ( "A[^B]*?B.*?C" , perl
, "AxBx" , match_default
| match_partial
, make_array ( 0 , 4 , - 2 , - 2 ));
431 TEST_REGEX_SEARCH ( "A[^B]*?B.*?C" , perl
, "AxBxxxx" , match_default
| match_partial
| match_not_dot_null
, make_array ( 0 , 7 , - 2 , - 2 ));
432 TEST_REGEX_SEARCH ( "A[^B]*?B.*?C" , perl
, "AxBx" , match_default
| match_partial
| match_not_dot_null
, make_array ( 0 , 4 , - 2 , - 2 ));
433 TEST_REGEX_SEARCH ( "A[^B]*?Bx*?C" , perl
, "AxBxxxx" , match_default
| match_partial
| match_not_dot_null
, make_array ( 0 , 7 , - 2 , - 2 ));
434 TEST_REGEX_SEARCH ( "A[^B]*?Bx*?C" , perl
, "AxBx" , match_default
| match_partial
| match_not_dot_null
, make_array ( 0 , 4 , - 2 , - 2 ));
435 TEST_REGEX_SEARCH ( "A[^B]*?B[xac]*?C" , perl
, "AxBxxxx" , match_default
| match_partial
| match_not_dot_null
, make_array ( 0 , 7 , - 2 , - 2 ));
436 TEST_REGEX_SEARCH ( "A[^B]*?B[xac]*?C" , perl
, "AxBx" , match_default
| match_partial
| match_not_dot_null
, make_array ( 0 , 4 , - 2 , - 2 ));
437 TEST_REGEX_SEARCH ( "A[^B]*?B[xac[.ae.]]*?C" , perl
, "AxBxxxx" , match_default
| match_partial
| match_not_dot_null
, make_array ( 0 , 7 , - 2 , - 2 ));
438 TEST_REGEX_SEARCH ( "A[^B]*?B[xac[.ae.]]*?C" , perl
, "AxBx" , match_default
| match_partial
| match_not_dot_null
, make_array ( 0 , 4 , - 2 , - 2 ));
443 void test_pocessive_repeats ()
445 using namespace boost :: regex_constants
;
446 // and again for sets:
447 TEST_REGEX_SEARCH ( "^( \\ w++| \\ s++)*$" , perl
, "now is the time for all good men to come to the aid of the party" , match_default
, make_array ( 0 , 64 , 59 , 64 , - 2 , - 2 ));
448 TEST_REGEX_SEARCH ( "^( \\ w++| \\ s++)*$" , perl
, "this is not a line with only words and spaces!" , match_default
, make_array (- 2 , - 2 ));
449 TEST_REGEX_SEARCH ( "( \\ d++)( \\ w)" , perl
, "12345a" , match_default
, make_array ( 0 , 6 , 0 , 5 , 5 , 6 , - 2 , - 2 ));
450 TEST_REGEX_SEARCH ( "( \\ d++)( \\ w)" , perl
, "12345+" , match_default
, make_array (- 2 , - 2 ));
451 TEST_REGEX_SEARCH ( "( \\ d++)( \\ w)" , perl
, "12345" , match_default
, make_array (- 2 , - 2 ));
452 TEST_REGEX_SEARCH ( "a++b" , perl
, "aaab" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
453 TEST_REGEX_SEARCH ( "(a++b)" , perl
, "aaab" , match_default
, make_array ( 0 , 4 , 0 , 4 , - 2 , - 2 ));
454 TEST_REGEX_SEARCH ( "([^()]++| \\ ([^()]* \\ ))+" , perl
, "((abc(ade)ufh()()x" , match_default
, make_array ( 2 , 18 , 17 , 18 , - 2 , - 2 ));
455 TEST_REGEX_SEARCH ( " \\ (([^()]++| \\ ([^()]+ \\ ))+ \\ )" , perl
, "(abc)" , match_default
, make_array ( 0 , 5 , 1 , 4 , - 2 , - 2 ));
456 TEST_REGEX_SEARCH ( " \\ (([^()]++| \\ ([^()]+ \\ ))+ \\ )" , perl
, "(abc(def)xyz)" , match_default
, make_array ( 0 , 13 , 9 , 12 , - 2 , - 2 ));
457 TEST_REGEX_SEARCH ( " \\ (([^()]++| \\ ([^()]+ \\ ))+ \\ )" , perl
, "((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" , match_default
, make_array (- 2 , - 2 ));
459 TEST_REGEX_SEARCH("< (?: (?(R) \\d++ | [^<>]*+) | (?R)) * >", perl|mod_x, "<>", match_default, make_array(0, 2, -2, -2));
460 TEST_REGEX_SEARCH("< (?: (?(R) \\d++ | [^<>]*+) | (?R)) * >", perl|mod_x, "<abcd>", match_default, make_array(0, 6, -2, -2));
461 TEST_REGEX_SEARCH("< (?: (?(R) \\d++ | [^<>]*+) | (?R)) * >", perl|mod_x, "<abc <123> hij>", match_default, make_array(0, 15, -2, -2));
462 TEST_REGEX_SEARCH("< (?: (?(R) \\d++ | [^<>]*+) | (?R)) * >", perl|mod_x, "<abc <def> hij>", match_default, make_array(5, 10, -2, -2));
463 TEST_REGEX_SEARCH("< (?: (?(R) \\d++ | [^<>]*+) | (?R)) * >", perl|mod_x, "<abc<>def>", match_default, make_array(0, 10, -2, -2));
464 TEST_REGEX_SEARCH("< (?: (?(R) \\d++ | [^<>]*+) | (?R)) * >", perl|mod_x, "<abc<>", match_default, make_array(4, 6, -2, -2));
465 TEST_REGEX_SEARCH("< (?: (?(R) \\d++ | [^<>]*+) | (?R)) * >", perl|mod_x, "<abc", match_default, make_array(-2, -2));
467 TEST_REGEX_SEARCH("((< (?: (?(R) \d++ | [^<>]*+) | (?2)) * >))", perl|mod_x, "<>", match_default, make_array(0, 2, 0, 2, 0, 2, -2, -2));
468 TEST_REGEX_SEARCH("((< (?: (?(R) \d++ | [^<>]*+) | (?2)) * >))", perl|mod_x, "<abcd>", match_default, make_array(0, 6, 0, 6, 0, 6, -2, -2));
469 TEST_REGEX_SEARCH("((< (?: (?(R) \d++ | [^<>]*+) | (?2)) * >))", perl|mod_x, "<abc <123> hij>", match_default, make_array(0, 15, 0, 15, 0, 15, -2, -2));
470 TEST_REGEX_SEARCH("((< (?: (?(R) \d++ | [^<>]*+) | (?2)) * >))", perl|mod_x, "<abc <def> hij>", match_default, make_array(5, 10, 5, 10, 5, 10, -2, -2));
471 TEST_REGEX_SEARCH("((< (?: (?(R) \d++ | [^<>]*+) | (?2)) * >))", perl|mod_x, "<abc<>def>", match_default, make_array(0, 10, 0, 10, 0, 10, -2, -2));
472 TEST_REGEX_SEARCH("((< (?: (?(R) \d++ | [^<>]*+) | (?2)) * >))", perl|mod_x, "<abc<>", match_default, make_array(4, 6, 4, 6, 4, 6, -2, -2));
473 TEST_REGEX_SEARCH("((< (?: (?(R) \d++ | [^<>]*+) | (?2)) * >))", perl|mod_x, "<abc", match_default, make_array(-2, -2));
475 TEST_REGEX_SEARCH ( "x*+ \\ w" , perl
, "xxxxx" , match_default
, make_array (- 2 , - 2 ));
476 TEST_REGEX_SEARCH ( "x*+ \\ w" , perl
, "xxxxxa" , match_default
, make_array ( 0 , 6 , - 2 , - 2 ));
477 TEST_REGEX_SEARCH ( "x{1,6}+ \\ w" , perl
, "xxxxx" , match_default
, make_array (- 2 , - 2 ));
478 TEST_REGEX_SEARCH ( "x{1,6}+ \\ w" , perl
, "xxxxxa" , match_default
, make_array ( 0 , 6 , - 2 , - 2 ));
479 TEST_REGEX_SEARCH ( "x{1,5}+ \\ w" , perl
, "xxxxxa" , match_default
, make_array ( 0 , 6 , - 2 , - 2 ));
480 TEST_REGEX_SEARCH ( "x{1,4}+ \\ w" , perl
, "xxxxxa" , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
481 TEST_REGEX_SEARCH ( "x{1,3}+ \\ w" , perl
, "xxxxxa" , match_default
, make_array ( 0 , 4 , - 2 , 4 , 6 , - 2 , - 2 ));
482 TEST_INVALID_REGEX ( " \\ d+++" , perl
);
483 TEST_INVALID_REGEX ( " \\ d++*" , perl
);
484 TEST_INVALID_REGEX ( " \\ d++?" , perl
);
485 TEST_INVALID_REGEX ( " \\ d++{3}" , perl
);
486 TEST_INVALID_REGEX ( " \\ d*++" , perl
);
487 TEST_INVALID_REGEX ( " \\ d?++" , perl
);
488 TEST_INVALID_REGEX ( " \\ d{1,2}++" , perl
);