]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/regex/test/regress/test_perl_ex.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)
20 void test_independent_subs ()
22 using namespace boost :: regex_constants
;
23 TEST_REGEX_SEARCH ( "(?>^abc)" , perl
, "abc" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
24 TEST_REGEX_SEARCH ( "(?>^abc)" , perl
, "def \n abc" , match_default
, make_array ( 4 , 7 , - 2 , - 2 ));
25 TEST_REGEX_SEARCH ( "(?>^abc)" , perl
, "defabc" , match_default
, make_array (- 2 , - 2 ));
26 TEST_REGEX_SEARCH ( "(?>.*/)foo" , perl
, "/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/" , match_default
, make_array (- 2 , - 2 ));
27 TEST_REGEX_SEARCH ( "(?>.*/)foo" , perl
, "/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo" , match_default
, make_array ( 0 , 67 , - 2 , - 2 ));
28 TEST_REGEX_SEARCH ( "(?>( \\ . \\ d \\ d[1-9]?)) \\ d+" , perl
, "1.230003938" , match_default
, make_array ( 1 , 11 , 1 , 4 , - 2 , - 2 ));
29 TEST_REGEX_SEARCH ( "(?>( \\ . \\ d \\ d[1-9]?)) \\ d+" , perl
, "1.875000282" , match_default
, make_array ( 1 , 11 , 1 , 5 , - 2 , - 2 ));
30 TEST_REGEX_SEARCH ( "(?>( \\ . \\ d \\ d[1-9]?)) \\ d+" , perl
, "1.235" , match_default
, make_array (- 2 , - 2 ));
31 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 ));
32 TEST_REGEX_SEARCH ( "^((?> \\ w+)|(?> \\ s+))*$" , perl
, "this is not a line with only words and spaces!" , match_default
, make_array (- 2 , - 2 ));
33 TEST_REGEX_SEARCH ( "((?> \\ d+))( \\ w)" , perl
, "12345a" , match_default
, make_array ( 0 , 6 , 0 , 5 , 5 , 6 , - 2 , - 2 ));
34 TEST_REGEX_SEARCH ( "((?> \\ d+))( \\ w)" , perl
, "12345+" , match_default
, make_array (- 2 , - 2 ));
35 TEST_REGEX_SEARCH ( "((?> \\ d+))( \\ d)" , perl
, "12345" , match_default
, make_array (- 2 , - 2 ));
36 TEST_REGEX_SEARCH ( "(?>a+)b" , perl
, "aaab" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
37 TEST_REGEX_SEARCH ( "((?>a+)b)" , perl
, "aaab" , match_default
, make_array ( 0 , 4 , 0 , 4 , - 2 , - 2 ));
38 TEST_REGEX_SEARCH ( "(?>(a+))b" , perl
, "aaab" , match_default
, make_array ( 0 , 4 , 0 , 3 , - 2 , - 2 ));
39 TEST_REGEX_SEARCH ( "(?>b)+" , perl
, "aaabbbccc" , match_default
, make_array ( 3 , 6 , - 2 , - 2 ));
40 TEST_REGEX_SEARCH ( "(?>a+|b+|c+)*c" , perl
, "aaabbbbccccd" , match_default
, make_array ( 0 , 8 , - 2 , 8 , 9 , - 2 , 9 , 10 , - 2 , 10 , 11 , - 2 , - 2 ));
41 TEST_REGEX_SEARCH ( "((?>[^()]+)| \\ ([^()]* \\ ))+" , perl
, "((abc(ade)ufh()()x" , match_default
, make_array ( 2 , 18 , 17 , 18 , - 2 , - 2 ));
42 TEST_REGEX_SEARCH ( " \\ (((?>[^()]+)| \\ ([^()]+ \\ ))+ \\ )" , perl
, "(abc)" , match_default
, make_array ( 0 , 5 , 1 , 4 , - 2 , - 2 ));
43 TEST_REGEX_SEARCH ( " \\ (((?>[^()]+)| \\ ([^()]+ \\ ))+ \\ )" , perl
, "(abc(def)xyz)" , match_default
, make_array ( 0 , 13 , 9 , 12 , - 2 , - 2 ));
44 TEST_REGEX_SEARCH ( " \\ (((?>[^()]+)| \\ ([^()]+ \\ ))+ \\ )" , perl
, "((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" , match_default
, make_array (- 2 , - 2 ));
46 TEST_REGEX_SEARCH ( "(?>a*)*" , perl
, "a" , match_default
, make_array ( 0 , 1 , - 2 , 1 , 1 , - 2 , - 2 ));
47 TEST_REGEX_SEARCH ( "(?>a*)*" , perl
, "aa" , match_default
, make_array ( 0 , 2 , - 2 , 2 , 2 , - 2 , - 2 ));
48 TEST_REGEX_SEARCH ( "(?>a*)*" , perl
, "aaaa" , match_default
, make_array ( 0 , 4 , - 2 , 4 , 4 , - 2 , - 2 ));
49 TEST_REGEX_SEARCH ( "(?>a*)*" , perl
, "a" , match_default
, make_array ( 0 , 1 , - 2 , 1 , 1 , - 2 , - 2 ));
50 TEST_REGEX_SEARCH ( "(?>a*)*" , perl
, "aaabcde" , match_default
, make_array ( 0 , 3 , - 2 , 3 , 3 , - 2 , 4 , 4 , - 2 , 5 , 5 , - 2 , 6 , 6 , - 2 , 7 , 7 , - 2 , - 2 ));
51 TEST_REGEX_SEARCH ( "((?>a*))*" , perl
, "aaaaa" , match_default
, make_array ( 0 , 5 , 5 , 5 , - 2 , 5 , 5 , 5 , 5 , - 2 , - 2 ));
52 TEST_REGEX_SEARCH ( "((?>a*))*" , perl
, "aabbaa" , match_default
, make_array ( 0 , 2 , 2 , 2 , - 2 , 2 , 2 , 2 , 2 , - 2 , 3 , 3 , 3 , 3 , - 2 , 4 , 6 , 6 , 6 , - 2 , 6 , 6 , 6 , 6 , - 2 , - 2 ));
53 TEST_REGEX_SEARCH ( "((?>a*?))*" , perl
, "aaaaa" , match_default
, make_array ( 0 , 0 , 0 , 0 , - 2 , 1 , 1 , 1 , 1 , - 2 , 2 , 2 , 2 , 2 , - 2 , 3 , 3 , 3 , 3 , - 2 , 4 , 4 , 4 , 4 , - 2 , 5 , 5 , 5 , 5 , - 2 , - 2 ));
54 TEST_REGEX_SEARCH ( "((?>a*?))*" , perl
, "aabbaa" , match_default
, make_array ( 0 , 0 , 0 , 0 , - 2 , 1 , 1 , 1 , 1 , - 2 , 2 , 2 , 2 , 2 , - 2 , 3 , 3 , 3 , 3 , - 2 , 4 , 4 , 4 , 4 , - 2 , 5 , 5 , 5 , 5 , - 2 , 6 , 6 , 6 , 6 , - 2 , - 2 ));
55 TEST_REGEX_SEARCH ( "word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword" , perl
, "word cat dog elephant mussel cow horse canary baboon snake shark otherword" , match_default
, make_array ( 0 , 74 , - 2 , - 2 ));
56 TEST_REGEX_SEARCH ( "word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword" , perl
, "word cat dog elephant mussel cow horse canary baboon snake shark" , match_default
, make_array (- 2 , - 2 ));
57 TEST_REGEX_SEARCH ( "word (?>[a-zA-Z0-9]+ ){0,30}otherword" , perl
, "word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope" , match_default
, make_array (- 2 , - 2 ));
58 TEST_REGEX_SEARCH ( "word (?>[a-zA-Z0-9]+ ){0,30}otherword" , perl
, "word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I really really hope otherword" , match_default
, make_array (- 2 , - 2 ));
59 TEST_REGEX_SEARCH ( "((?>Z)+|A)+" , perl
, "ZABCDEFG" , match_default
, make_array ( 0 , 2 , 1 , 2 , - 2 , - 2 ));
60 TEST_INVALID_REGEX ( "((?>)+|A)+" , perl
);
63 void test_conditionals ()
65 using namespace boost :: regex_constants
;
66 TEST_REGEX_SEARCH ( "(?:(a)|b)(?(1)A|B)" , perl
, "aA" , match_default
, make_array ( 0 , 2 , 0 , 1 , - 2 , - 2 ));
67 TEST_REGEX_SEARCH ( "(?:(a)|b)(?(1)A|B)" , perl
, "bB" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
68 TEST_REGEX_SEARCH ( "(?:(a)|b)(?(1)A|B)" , perl
, "aB" , match_default
, make_array (- 2 , - 2 ));
69 TEST_REGEX_SEARCH ( "(?:(a)|b)(?(1)A|B)" , perl
, "bA" , match_default
, make_array (- 2 , - 2 ));
71 TEST_REGEX_SEARCH ( "(a)?(?(1)A)B" , perl
, "aAB" , match_default
, make_array ( 0 , 3 , 0 , 1 , - 2 , - 2 ));
72 TEST_REGEX_SEARCH ( "(a)?(?(1)A)B" , perl
, "B" , match_default
, make_array ( 0 , 1 , - 1 , - 1 , - 2 , - 2 ));
73 TEST_REGEX_SEARCH ( "(a)?(?(1)|A)B" , perl
, "aB" , match_default
, make_array ( 0 , 2 , 0 , 1 , - 2 , - 2 ));
74 TEST_REGEX_SEARCH ( "(a)?(?(1)|A)B" , perl
, "AB" , match_default
, make_array ( 0 , 2 , - 1 , - 1 , - 2 , - 2 ));
76 TEST_REGEX_SEARCH ( "^(a)?(?(1)a|b)+$" , perl
, "aa" , match_default
, make_array ( 0 , 2 , 0 , 1 , - 2 , - 2 ));
77 TEST_REGEX_SEARCH ( "^(a)?(?(1)a|b)+$" , perl
, "b" , match_default
, make_array ( 0 , 1 , - 2 , - 2 ));
78 TEST_REGEX_SEARCH ( "^(a)?(?(1)a|b)+$" , perl
, "bb" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
79 TEST_REGEX_SEARCH ( "^(a)?(?(1)a|b)+$" , perl
, "ab" , match_default
, make_array (- 2 , - 2 ));
81 TEST_REGEX_SEARCH ( "^(?(?=abc) \\ w{3}:| \\ d \\ d)$" , perl
, "abc:" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
82 TEST_REGEX_SEARCH ( "^(?(?=abc) \\ w{3}:| \\ d \\ d)$" , perl
, "12" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
83 TEST_REGEX_SEARCH ( "^(?(?=abc) \\ w{3}:| \\ d \\ d)$" , perl
, "123" , match_default
, make_array (- 2 , - 2 ));
84 TEST_REGEX_SEARCH ( "^(?(?=abc) \\ w{3}:| \\ d \\ d)$" , perl
, "xyz" , match_default
, make_array (- 2 , - 2 ));
86 TEST_REGEX_SEARCH ( "^(?(?!abc) \\ d \\ d| \\ w{3}:)$" , perl
, "abc:" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
87 TEST_REGEX_SEARCH ( "^(?(?!abc) \\ d \\ d| \\ w{3}:)$" , perl
, "12" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
88 TEST_REGEX_SEARCH ( "^(?(?!abc) \\ d \\ d| \\ w{3}:)$" , perl
, "123" , match_default
, make_array (- 2 , - 2 ));
89 TEST_REGEX_SEARCH ( "^(?(?!abc) \\ d \\ d| \\ w{3}:)$" , perl
, "xyz" , match_default
, make_array (- 2 , - 2 ));
91 TEST_REGEX_SEARCH ( "(?(?<=foo)bar|cat)" , perl
, "foobar" , match_default
, make_array ( 3 , 6 , - 2 , - 2 ));
92 TEST_REGEX_SEARCH ( "(?(?<=foo)bar|cat)" , perl
, "cat" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
93 TEST_REGEX_SEARCH ( "(?(?<=foo)bar|cat)" , perl
, "fcat" , match_default
, make_array ( 1 , 4 , - 2 , - 2 ));
94 TEST_REGEX_SEARCH ( "(?(?<=foo)bar|cat)" , perl
, "focat" , match_default
, make_array ( 2 , 5 , - 2 , - 2 ));
95 TEST_REGEX_SEARCH ( "(?(?<=foo)bar|cat)" , perl
, "foocat" , match_default
, make_array (- 2 , - 2 ));
97 TEST_REGEX_SEARCH ( "(?(?<!foo)cat|bar)" , perl
, "foobar" , match_default
, make_array ( 3 , 6 , - 2 , - 2 ));
98 TEST_REGEX_SEARCH ( "(?(?<!foo)cat|bar)" , perl
, "cat" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
99 TEST_REGEX_SEARCH ( "(?(?<!foo)cat|bar)" , perl
, "fcat" , match_default
, make_array ( 1 , 4 , - 2 , - 2 ));
100 TEST_REGEX_SEARCH ( "(?(?<!foo)cat|bar)" , perl
, "focat" , match_default
, make_array ( 2 , 5 , - 2 , - 2 ));
101 TEST_REGEX_SEARCH ( "(?(?<!foo)cat|bar)" , perl
, "foocat" , match_default
, make_array (- 2 , - 2 ));
103 TEST_REGEX_SEARCH ( "( \\ ()?[^()]+(?(1) \\ ))" , perl
, "abcd" , match_default
, make_array ( 0 , 4 , - 1 , - 1 , - 2 , - 2 ));
104 TEST_REGEX_SEARCH ( "( \\ ()?[^()]+(?(1) \\ ))" , perl
, "(abcd)" , match_default
, make_array ( 0 , 6 , 0 , 1 , - 2 , - 2 ));
105 TEST_REGEX_SEARCH ( "( \\ ()?[^()]+(?(1) \\ ))" , perl
, "the quick (abcd) fox" , match_default
, make_array ( 0 , 10 , - 1 , - 1 , - 2 , 10 , 16 , 10 , 11 , - 2 , 16 , 20 , - 1 , - 1 , - 2 , - 2 ));
106 TEST_REGEX_SEARCH ( "( \\ ()?[^()]+(?(1) \\ ))" , perl
, "(abcd" , match_default
, make_array ( 1 , 5 , - 1 , - 1 , - 2 , - 2 ));
108 TEST_REGEX_SEARCH ( "^(?(2)a|(1)(2))+$" , perl
, "12" , match_default
, make_array ( 0 , 2 , 0 , 1 , 1 , 2 , - 2 , - 2 ));
109 TEST_REGEX_SEARCH ( "^(?(2)a|(1)(2))+$" , perl
, "12a" , match_default
, make_array ( 0 , 3 , 0 , 1 , 1 , 2 , - 2 , - 2 ));
110 TEST_REGEX_SEARCH ( "^(?(2)a|(1)(2))+$" , perl
, "12aa" , match_default
, make_array ( 0 , 4 , 0 , 1 , 1 , 2 , - 2 , - 2 ));
111 TEST_REGEX_SEARCH ( "^(?(2)a|(1)(2))+$" , perl
, "1234" , match_default
, make_array (- 2 , - 2 ));
113 TEST_INVALID_REGEX ( "(a)(?(1)a|b|c)" , perl
);
114 TEST_INVALID_REGEX ( "(?(?=a)a|b|c)" , perl
);
115 TEST_INVALID_REGEX ( "(?(1a)" , perl
);
116 TEST_INVALID_REGEX ( "(?:(a)|b)(?(" , perl
);
117 TEST_INVALID_REGEX ( "(?:(a)|b)(?(1" , perl
);
118 TEST_INVALID_REGEX ( "(?:(a)|b)(?(1)" , perl
);
119 TEST_INVALID_REGEX ( "(?:(a)|b)(?(a" , perl
);
120 TEST_INVALID_REGEX ( "(?:(a)|b)(?(?" , perl
);
121 TEST_INVALID_REGEX ( "(?:(a)|b)(?(?:" , perl
);
122 TEST_INVALID_REGEX ( "(?:(a)|b)(?(?<" , perl
);
123 TEST_INVALID_REGEX ( "(?:(a)|b)(?(?<a" , perl
);
125 TEST_INVALID_REGEX ( "(?(?!#?)+)" , perl
);
126 TEST_INVALID_REGEX ( "(?(?=:-){0})" , perl
);
127 TEST_INVALID_REGEX ( "(?(123){1})" , perl
);
128 TEST_INVALID_REGEX ( "(?(?<=A)*)" , perl
);
129 TEST_INVALID_REGEX ( "(?(?<=A)+)" , perl
);
131 TEST_INVALID_REGEX ( "(?<!*|^)" , perl
);
132 TEST_INVALID_REGEX ( "(?<!*|A)" , perl
);
133 TEST_INVALID_REGEX ( "(?<=?|A)" , perl
);
134 TEST_INVALID_REGEX ( "(?<=*| \\ B)" , perl
);
135 TEST_INVALID_REGEX ( "(?<!a|bc)de" , perl
);
136 TEST_INVALID_REGEX ( "(?<=a|bc)de" , perl
);
139 TEST_REGEX_SEARCH ( " \\ b(?:(?:(one)|(two)|(three))(?:,| \\ b)){3,}(?(1)|(?!))(?(2)|(?!))(?(3)|(?!))" , perl
, "one,two,two, one" , match_default
, make_array (- 2 , - 2 ));
140 TEST_REGEX_SEARCH ( " \\ b(?:(?:(one)|(two)|(three))(?:,| \\ b)){3,}(?(1)|(?!))(?(2)|(?!))(?(3)|(?!))" , perl
, "one,three,two" , match_default
, make_array ( 0 , 13 , 0 , 3 , 10 , 13 , 4 , 9 , - 2 , - 2 ));
141 TEST_REGEX_SEARCH ( " \\ b(?:(?:(one)|(two)|(three))(?:,| \\ b)){3,}(?(1)|(?!))(?(2)|(?!))(?(3)|(?!))" , perl
, "one,two,two,one,three,four" , match_default
, make_array ( 0 , 22 , 12 , 15 , 8 , 11 , 16 , 21 , - 2 , - 2 ));
146 // test the (?imsx) construct:
147 using namespace boost :: regex_constants
;
148 TEST_INVALID_REGEX ( "(?imsx" , perl
);
149 TEST_INVALID_REGEX ( "(?g" , perl
);
150 TEST_INVALID_REGEX ( "(?im-sx" , perl
);
151 TEST_INVALID_REGEX ( "(?im-sx:" , perl
);
152 TEST_INVALID_REGEX ( "(?-g)" , perl
);
153 TEST_REGEX_SEARCH ( "(?-m)^abc" , perl
, "abc \n abc" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
154 TEST_REGEX_SEARCH ( "(?m)^abc" , perl
| no_mod_m
, "abc \n abc" , match_default
, make_array ( 0 , 3 , - 2 , 4 , 7 , - 2 , - 2 ));
155 TEST_REGEX_SEARCH ( "(?-m)^abc" , perl
, "abc \n abc" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
156 TEST_REGEX_SEARCH ( "(?m)^abc" , perl
| no_mod_m
, "abc \n abc" , match_default
, make_array ( 0 , 3 , - 2 , 4 , 7 , - 2 , - 2 ));
158 TEST_REGEX_SEARCH ( " ^ a (?# begins with a) b \\ sc (?# then b c) $ (?# then end)" , perl
| mod_x
, "ab c" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
159 TEST_REGEX_SEARCH ( " ^ a (?# begins with a) b \\ sc (?# then b c) $ (?# then end)" , perl
| mod_x
, "abc" , match_default
, make_array (- 2 , - 2 ));
160 TEST_REGEX_SEARCH ( " ^ a (?# begins with a) b \\ sc (?# then b c) $ (?# then end)" , perl
| mod_x
, "ab cde" , match_default
, make_array (- 2 , - 2 ));
161 TEST_REGEX_SEARCH ( "(?x) ^ a (?# begins with a) b \\ sc (?# then b c) $ (?# then end)" , perl
, "ab c" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
162 TEST_REGEX_SEARCH ( "(?x) ^ a (?# begins with a) b \\ sc (?# then b c) $ (?# then end)" , perl
, "abc" , match_default
, make_array (- 2 , - 2 ));
163 TEST_REGEX_SEARCH ( "(?x) ^ a (?# begins with a) b \\ sc (?# then b c) $ (?# then end)" , perl
, "ab cde" , match_default
, make_array (- 2 , - 2 ));
164 TEST_REGEX_SEARCH ( "^ a \\ b[c ]d $" , perl
| mod_x
, "a bcd" , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
165 TEST_REGEX_SEARCH ( "^ a \\ b[c ]d $" , perl
| mod_x
, "a b d" , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
166 TEST_REGEX_SEARCH ( "^ a \\ b[c ]d $" , perl
| mod_x
, "abcd" , match_default
, make_array (- 2 , - 2 ));
167 TEST_REGEX_SEARCH ( "^ a \\ b[c ]d $" , perl
| mod_x
, "ab d" , match_default
, make_array (- 2 , - 2 ));
169 TEST_REGEX_SEARCH ( "^1234(?# test newlines \n inside)" , perl
| mod_x
, "1234" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
170 TEST_REGEX_SEARCH ( "^1234 #comment in boost::regex::extended re \n " , perl
| mod_x
, "1234" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
171 TEST_REGEX_SEARCH ( "#rhubarb \n abcd" , perl
| mod_x
, "abcd" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
172 TEST_REGEX_SEARCH ( "^1234 #comment in boost::regex::extended re \r\n " , perl
| mod_x
, "1234" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
173 TEST_REGEX_SEARCH ( "#rhubarb \r\n abcd" , perl
| mod_x
, "abcd" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
174 TEST_REGEX_SEARCH ( "^abcd#rhubarb" , perl
| mod_x
, "abcd" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
175 TEST_REGEX_SEARCH ( "^abcd#rhubarb" , perl
, "abcd#rhubarb" , match_default
, make_array ( 0 , 12 , - 2 , - 2 ));
176 TEST_REGEX_SEARCH ( "^a b \n\n \f c", perl
| mod_x
, "abc" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
178 TEST_REGEX_SEARCH ( "(?(?=[^a-z]+[a-z]) \\ d{2}-[a-z]{3}- \\ d{2} | \\ d{2}- \\ d{2}- \\ d{2} ) " , perl
| mod_x
, "12-sep-98" , match_default
, make_array ( 0 , 9 , - 2 , - 2 ));
179 TEST_REGEX_SEARCH ( "(?(?=[^a-z]+[a-z]) \\ d{2}-[a-z]{3}- \\ d{2} | \\ d{2}- \\ d{2}- \\ d{2} ) " , perl
| mod_x
, "12-09-98" , match_default
, make_array ( 0 , 8 , - 2 , - 2 ));
180 TEST_REGEX_SEARCH ( "(?(?=[^a-z]+[a-z]) \\ d{2}-[a-z]{3}- \\ d{2} | \\ d{2}- \\ d{2}- \\ d{2} ) " , perl
| mod_x
, "sep-12-98" , match_default
, make_array (- 2 , - 2 ));
181 TEST_REGEX_SEARCH ( "^a (?#xxx) (?#yyy) {3}c" , perl
| mod_x
, "aaac" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
182 TEST_REGEX_SEARCH ( "a\v b" , perl
| mod_x
, "ab" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
183 TEST_REGEX_SEARCH ( " abc \\ Q abc \\ Eabc" , perl
| mod_x
, "abc abcabc" , match_default
, make_array ( 0 , 10 , - 2 , - 2 ));
184 TEST_REGEX_SEARCH ( " abc \\ Q abc \\ Eabc" , perl
| mod_x
, "abcabcabc" , match_default
, make_array (- 2 , - 2 ));
185 TEST_REGEX_SEARCH ( "abc#comment \n \\ Q#not comment \n literal \\ E" , perl
| mod_x
, "abc#not comment \n literal" , match_default
, make_array ( 0 , 27 , - 2 , - 2 ));
186 TEST_REGEX_SEARCH ( "abc#comment \n \\ Q#not comment \n literal" , perl
| mod_x
, "abc#not comment \n literal" , match_default
, make_array ( 0 , 27 , - 2 , - 2 ));
187 TEST_REGEX_SEARCH ( "abc#comment \n \\ Q#not comment \n literal \\ E #more comment \n " , perl
| mod_x
, "abc#not comment \n literal" , match_default
, make_array ( 0 , 27 , - 2 , - 2 ));
188 TEST_REGEX_SEARCH ( "abc#comment \n \\ Q#not comment \n literal \\ E #more comment" , perl
| mod_x
, "abc#not comment \n literal" , match_default
, make_array ( 0 , 27 , - 2 , - 2 ));
190 TEST_REGEX_SEARCH ( "(a (?x)b c)d e" , perl
, "a bcd e" , match_default
, make_array ( 0 , 7 , 0 , 4 , - 2 , - 2 ));
191 TEST_REGEX_SEARCH ( "(a (?x)b c)d e" , perl
, "a b cd e" , match_default
, make_array (- 2 , - 2 ));
192 TEST_REGEX_SEARCH ( "(a (?x)b c)d e" , perl
, "abcd e" , match_default
, make_array (- 2 , - 2 ));
193 TEST_REGEX_SEARCH ( "(a (?x)b c)d e" , perl
, "a bcde" , match_default
, make_array (- 2 , - 2 ));
194 TEST_REGEX_SEARCH ( "(a b(?x)c d (?-x)e f)" , perl
, "a bcde f" , match_default
, make_array ( 0 , 8 , 0 , 8 , - 2 , - 2 ));
195 TEST_REGEX_SEARCH ( "(a b(?x)c d (?-x)e f)" , perl
, "abcdef" , match_default
, make_array (- 2 , - 2 ));
197 TEST_REGEX_SEARCH ( "a(?x: b c )d" , perl
, "XabcdY" , match_default
, make_array ( 1 , 5 , - 2 , - 2 ));
198 TEST_REGEX_SEARCH ( "a(?x: b c )d" , perl
, "Xa b c d Y" , match_default
, make_array (- 2 , - 2 ));
199 TEST_REGEX_SEARCH ( "((?x)x y z | a b c)" , perl
, "XabcY" , match_default
, make_array ( 1 , 4 , 1 , 4 , - 2 , - 2 ));
200 TEST_REGEX_SEARCH ( "((?x)x y z | a b c)" , perl
, "AxyzB" , match_default
, make_array ( 1 , 4 , 1 , 4 , - 2 , - 2 ));
202 TEST_REGEX_SEARCH ( "(a (?x)b c)d e" , perl
, "a bcd e" , match_default
, make_array ( 0 , 7 , 0 , 4 , - 2 , - 2 ));
203 TEST_REGEX_SEARCH ( "(a (?x)b c)d e" , perl
, "a b cd e" , match_default
, make_array (- 2 , - 2 ));
204 TEST_REGEX_SEARCH ( "(a (?x)b c)d e" , perl
, "abcd e" , match_default
, make_array (- 2 , - 2 ));
205 TEST_REGEX_SEARCH ( "(a (?x)b c)d e" , perl
, "a bcde" , match_default
, make_array (- 2 , - 2 ));
206 TEST_REGEX_SEARCH ( "(a b(?x)c d (?-x)e f)" , perl
, "a bcde f" , match_default
, make_array ( 0 , 8 , 0 , 8 , - 2 , - 2 ));
207 TEST_REGEX_SEARCH ( "(a b(?x)c d (?-x)e f)" , perl
, "abcdef" , match_default
, make_array (- 2 , - 2 ));
212 using namespace boost :: regex_constants
;
213 TEST_INVALID_REGEX ( "(?i-" , perl
);
214 TEST_INVALID_REGEX ( "(?i-s" , perl
);
215 TEST_INVALID_REGEX ( "(?i-sd)" , perl
);
216 TEST_REGEX_SEARCH ( "(a(?i)b)c" , perl
, "abc" , match_default
, make_array ( 0 , 3 , 0 , 2 , - 2 , - 2 ));
217 TEST_REGEX_SEARCH ( "(a(?i)b)c" , perl
, "aBc" , match_default
, make_array ( 0 , 3 , 0 , 2 , - 2 , - 2 ));
218 TEST_REGEX_SEARCH ( "(a(?i)b)c" , perl
, "abC" , match_default
, make_array (- 2 , - 2 ));
219 TEST_REGEX_SEARCH ( "(a(?i)b)c" , perl
, "aBC" , match_default
, make_array (- 2 , - 2 ));
220 TEST_REGEX_SEARCH ( "(a(?i)b)c" , perl
, "Abc" , match_default
, make_array (- 2 , - 2 ));
221 TEST_REGEX_SEARCH ( "(a(?i)b)c" , perl
, "ABc" , match_default
, make_array (- 2 , - 2 ));
222 TEST_REGEX_SEARCH ( "(a(?i)b)c" , perl
, "ABC" , match_default
, make_array (- 2 , - 2 ));
223 TEST_REGEX_SEARCH ( "(a(?i)b)c" , perl
, "AbC" , match_default
, make_array (- 2 , - 2 ));
224 TEST_REGEX_SEARCH ( "(?i)[dh]og" , perl
, "hog" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
225 TEST_REGEX_SEARCH ( "(?i)[dh]og" , perl
, "dog" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
226 TEST_REGEX_SEARCH ( "(?i)[dh]og" , perl
, "Hog" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
227 TEST_REGEX_SEARCH ( "(?i)[dh]og" , perl
, "Dog" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
229 TEST_REGEX_SEARCH ( "(a(?i)B)c" , perl
, "abc" , match_default
, make_array ( 0 , 3 , 0 , 2 , - 2 , - 2 ));
230 TEST_REGEX_SEARCH ( "(a(?i)B)c" , perl
, "aBc" , match_default
, make_array ( 0 , 3 , 0 , 2 , - 2 , - 2 ));
231 TEST_REGEX_SEARCH ( "(a(?i)B)c" , perl
, "abC" , match_default
, make_array (- 2 , - 2 ));
232 TEST_REGEX_SEARCH ( "(a(?i)B)c" , perl
, "aBC" , match_default
, make_array (- 2 , - 2 ));
233 TEST_REGEX_SEARCH ( "(a(?i)B)c" , perl
, "Abc" , match_default
, make_array (- 2 , - 2 ));
234 TEST_REGEX_SEARCH ( "(a(?i)B)c" , perl
, "ABc" , match_default
, make_array (- 2 , - 2 ));
235 TEST_REGEX_SEARCH ( "(a(?i)B)c" , perl
, "ABC" , match_default
, make_array (- 2 , - 2 ));
236 TEST_REGEX_SEARCH ( "(a(?i)B)c" , perl
, "AbC" , match_default
, make_array (- 2 , - 2 ));
238 TEST_REGEX_SEARCH ( "a(?i:b)c" , perl
, "abc" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
239 TEST_REGEX_SEARCH ( "a(?i:b)c" , perl
, "aBc" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
240 TEST_REGEX_SEARCH ( "a(?i:b)c" , perl
, "ABC" , match_default
, make_array (- 2 , - 2 ));
241 TEST_REGEX_SEARCH ( "a(?i:b)c" , perl
, "abC" , match_default
, make_array (- 2 , - 2 ));
242 TEST_REGEX_SEARCH ( "a(?i:b)c" , perl
, "aBC" , match_default
, make_array (- 2 , - 2 ));
244 TEST_REGEX_SEARCH ( "a(?i:b)*c" , perl
, "aBc" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
245 TEST_REGEX_SEARCH ( "a(?i:b)*c" , perl
, "aBBc" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
246 TEST_REGEX_SEARCH ( "a(?i:b)*c" , perl
, "aBC" , match_default
, make_array (- 2 , - 2 ));
247 TEST_REGEX_SEARCH ( "a(?i:b)*c" , perl
, "aBBC" , match_default
, make_array (- 2 , - 2 ));
248 TEST_REGEX_SEARCH ( "(?i:j)|h" , perl
, "J" , match_default
, make_array ( 0 , 1 , - 2 , - 2 ));
249 TEST_REGEX_SEARCH ( "(?i:j)|h" , perl
, "j" , match_default
, make_array ( 0 , 1 , - 2 , - 2 ));
250 TEST_REGEX_SEARCH ( "(?i:j)|h" , perl
, "h" , match_default
, make_array ( 0 , 1 , - 2 , - 2 ));
251 TEST_REGEX_SEARCH ( "(?i:j)|h" , perl
, "H" , match_default
, make_array (- 2 , - 2 ));
253 TEST_REGEX_SEARCH ( "a(?=b(?i)c) \\ w \\ wd" , perl
, "abcd" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
254 TEST_REGEX_SEARCH ( "a(?=b(?i)c) \\ w \\ wd" , perl
, "abCd" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
255 TEST_REGEX_SEARCH ( "a(?=b(?i)c) \\ w \\ wd" , perl
, "aBCd" , match_default
, make_array (- 2 , - 2 ));
256 TEST_REGEX_SEARCH ( "a(?=b(?i)c) \\ w \\ wd" , perl
, "abcD" , match_default
, make_array (- 2 , - 2 ));
258 TEST_REGEX_SEARCH ( "(?s-i:more.*than).*million" , perl
| icase
, "more than million" , match_default
, make_array ( 0 , 17 , - 2 , - 2 ));
259 TEST_REGEX_SEARCH ( "(?s-i:more.*than).*million" , perl
| icase
, "more than MILLION" , match_default
, make_array ( 0 , 17 , - 2 , - 2 ));
260 TEST_REGEX_SEARCH ( "(?s-i:more.*than).*million" , perl
| icase
, "more \n than Million" , match_default
, make_array ( 0 , 19 , - 2 , - 2 ));
261 TEST_REGEX_SEARCH ( "(?s-i:more.*than).*million" , perl
| icase
, "MORE THAN MILLION" , match_default
, make_array (- 2 , - 2 ));
262 TEST_REGEX_SEARCH ( "(?s-i:more.*than).*million" , perl
| icase
| no_mod_s
| no_mod_m
, "more \n than \n million" , match_default
, make_array (- 2 , - 2 ));
264 TEST_REGEX_SEARCH ( "(?:(?s-i)more.*than).*million" , perl
| icase
, "more than million" , match_default
, make_array ( 0 , 17 , - 2 , - 2 ));
265 TEST_REGEX_SEARCH ( "(?:(?s-i)more.*than).*million" , perl
| icase
, "more than MILLION" , match_default
, make_array ( 0 , 17 , - 2 , - 2 ));
266 TEST_REGEX_SEARCH ( "(?:(?s-i)more.*than).*million" , perl
| icase
, "more \n than Million" , match_default
, make_array ( 0 , 19 , - 2 , - 2 ));
267 TEST_REGEX_SEARCH ( "(?:(?s-i)more.*than).*million" , perl
| icase
, "MORE THAN MILLION" , match_default
, make_array (- 2 , - 2 ));
268 TEST_REGEX_SEARCH ( "(?:(?s-i)more.*than).*million" , perl
| icase
| no_mod_s
| no_mod_m
, "more \n than \n million" , match_default
, make_array (- 2 , - 2 ));
270 TEST_REGEX_SEARCH ( "(?>a(?i)b+)+c" , perl
, "abc" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
271 TEST_REGEX_SEARCH ( "(?>a(?i)b+)+c" , perl
, "aBbc" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
272 TEST_REGEX_SEARCH ( "(?>a(?i)b+)+c" , perl
, "aBBc" , match_default
, make_array ( 0 , 4 , - 2 , - 2 ));
273 TEST_REGEX_SEARCH ( "(?>a(?i)b+)+c" , perl
, "Abc" , match_default
, make_array (- 2 , - 2 ));
274 TEST_REGEX_SEARCH ( "(?>a(?i)b+)+c" , perl
, "abAb" , match_default
, make_array (- 2 , - 2 ));
275 TEST_REGEX_SEARCH ( "(?>a(?i)b+)+c" , perl
, "abbC" , match_default
, make_array (- 2 , - 2 ));
277 TEST_REGEX_SEARCH ( "(?=a(?i)b) \\ w \\ wc" , perl
, "abc" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
278 TEST_REGEX_SEARCH ( "(?=a(?i)b) \\ w \\ wc" , perl
, "aBc" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
279 TEST_REGEX_SEARCH ( "(?=a(?i)b) \\ w \\ wc" , perl
, "Ab" , match_default
, make_array (- 2 , - 2 ));
280 TEST_REGEX_SEARCH ( "(?=a(?i)b) \\ w \\ wc" , perl
, "abC" , match_default
, make_array (- 2 , - 2 ));
281 TEST_REGEX_SEARCH ( "(?=a(?i)b) \\ w \\ wc" , perl
, "aBC" , match_default
, make_array (- 2 , - 2 ));
283 TEST_REGEX_SEARCH ( "(?<=a(?i)b)( \\ w \\ w)c" , perl
, "abxxc" , match_default
, make_array ( 2 , 5 , 2 , 4 , - 2 , - 2 ));
284 TEST_REGEX_SEARCH ( "(?<=a(?i)b)( \\ w \\ w)c" , perl
, "aBxxc" , match_default
, make_array ( 2 , 5 , 2 , 4 , - 2 , - 2 ));
285 TEST_REGEX_SEARCH ( "(?<=a(?i)b)( \\ w \\ w)c" , perl
, "Abxxc" , match_default
, make_array (- 2 , - 2 ));
286 TEST_REGEX_SEARCH ( "(?<=a(?i)b)( \\ w \\ w)c" , perl
, "ABxxc" , match_default
, make_array (- 2 , - 2 ));
287 TEST_REGEX_SEARCH ( "(?<=a(?i)b)( \\ w \\ w)c" , perl
, "abxxC" , match_default
, make_array (- 2 , - 2 ));
289 TEST_REGEX_SEARCH ( "(?<=^.{4})(?:bar|cat)" , perl
, "fooocat" , match_default
, make_array ( 4 , 7 , - 2 , - 2 ));
290 TEST_REGEX_SEARCH ( "(?<=^.{4})(?:bar|cat)" , perl
, "foocat" , match_default
, make_array (- 2 , - 2 ));
291 TEST_REGEX_SEARCH ( "(?<=^a{4})(?:bar|cat)" , perl
, "aaaacat" , match_default
, make_array ( 4 , 7 , - 2 , - 2 ));
292 TEST_REGEX_SEARCH ( "(?<=^a{4})(?:bar|cat)" , perl
, "aaacat" , match_default
, make_array (- 2 , - 2 ));
293 TEST_REGEX_SEARCH ( "(?<=^[[:alpha:]]{4})(?:bar|cat)" , perl
, "aaaacat" , match_default
, make_array ( 4 , 7 , - 2 , - 2 ));
294 TEST_REGEX_SEARCH ( "(?<=^[[:alpha:]]{4})(?:bar|cat)" , perl
, "aaacat" , match_default
, make_array (- 2 , - 2 ));
296 //TEST_REGEX_SEARCH("(?<=ab(?i)x(?-i)y|(?i)z|b)ZZ", perl, "abxyZZ", match_default, make_array(4, 6, -2, -2));
297 //TEST_REGEX_SEARCH("(?<=ab(?i)x(?-i)y|(?i)z|b)ZZ", perl, "abXyZZ", match_default, make_array(4, 6, -2, -2));
298 TEST_REGEX_SEARCH ( "(?:ab(?i)x(?-i)y|(?i)z|b)ZZ" , perl
, "ZZZ" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
299 TEST_REGEX_SEARCH ( "(?:ab(?i)x(?-i)y|(?i)z|b)ZZ" , perl
, "zZZ" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
300 TEST_REGEX_SEARCH ( "(?:ab(?i)x(?-i)y|(?i)z|b)ZZ" , perl
, "bZZ" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
301 TEST_REGEX_SEARCH ( "(?:ab(?i)x(?-i)y|(?i)z|b)ZZ" , perl
, "BZZ" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
302 TEST_REGEX_SEARCH ( "(?:ab(?i)x(?-i)y|(?i)z|b)ZZ" , perl
, "ZZ" , match_default
, make_array (- 2 , - 2 ));
303 TEST_REGEX_SEARCH ( "(?:ab(?i)x(?-i)y|(?i)z|b)ZZ" , perl
, "abXYZZ" , match_default
, make_array (- 2 , - 2 ));
304 TEST_REGEX_SEARCH ( "(?:ab(?i)x(?-i)y|(?i)z|b)ZZ" , perl
, "zzz" , match_default
, make_array (- 2 , - 2 ));
305 TEST_REGEX_SEARCH ( "(?:ab(?i)x(?-i)y|(?i)z|b)ZZ" , perl
, "bzz" , match_default
, make_array (- 2 , - 2 ));
307 TEST_REGEX_SEARCH ( "((?-i)[[:lower:]])[[:lower:]]" , perl
| icase
, "ab" , match_default
, make_array ( 0 , 2 , 0 , 1 , - 2 , - 2 ));
308 TEST_REGEX_SEARCH ( "((?-i)[[:lower:]])[[:lower:]]" , perl
| icase
, "aB" , match_default
, make_array ( 0 , 2 , 0 , 1 , - 2 , - 2 ));
309 TEST_REGEX_SEARCH ( "((?-i)[[:lower:]])[[:lower:]]" , perl
| icase
, "Ab" , match_default
, make_array (- 2 , - 2 ));
310 TEST_REGEX_SEARCH ( "((?-i)[[:lower:]])[[:lower:]]" , perl
| icase
, "AB" , match_default
, make_array (- 2 , - 2 ));
312 TEST_REGEX_SEARCH ( "a(?-i)b" , perl
| icase
, "ab" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
313 TEST_REGEX_SEARCH ( "a(?-i)b" , perl
| icase
, "Ab" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
314 TEST_REGEX_SEARCH ( "a(?-i)b" , perl
| icase
, "aB" , match_default
, make_array (- 2 , - 2 ));
315 TEST_REGEX_SEARCH ( "a(?-i)b" , perl
| icase
, "AB" , match_default
, make_array (- 2 , - 2 ));
317 TEST_REGEX_SEARCH ( "(?:(?-i)a)b" , perl
| icase
, "ab" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
318 TEST_REGEX_SEARCH ( "((?-i)a)b" , perl
| icase
, "ab" , match_default
, make_array ( 0 , 2 , 0 , 1 , - 2 , - 2 ));
319 TEST_REGEX_SEARCH ( "(?:(?-i)a)b" , perl
| icase
, "aB" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
320 TEST_REGEX_SEARCH ( "((?-i)a)b" , perl
| icase
, "aB" , match_default
, make_array ( 0 , 2 , 0 , 1 , - 2 , - 2 ));
322 TEST_REGEX_SEARCH ( "(?:(?-i)a)b" , perl
| icase
, "Ab" , match_default
, make_array (- 2 , - 2 ));
323 TEST_REGEX_SEARCH ( "(?:(?-i)a)b" , perl
| icase
, "aB" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
324 TEST_REGEX_SEARCH ( "((?-i)a)b" , perl
| icase
, "aB" , match_default
, make_array ( 0 , 2 , 0 , 1 , - 2 , - 2 ));
326 TEST_REGEX_SEARCH ( "(?:(?-i)a)b" , perl
| icase
, "Ab" , match_default
, make_array (- 2 , - 2 ));
327 TEST_REGEX_SEARCH ( "(?:(?-i)a)b" , perl
| icase
, "AB" , match_default
, make_array (- 2 , - 2 ));
328 TEST_REGEX_SEARCH ( "(?-i:a)b" , perl
| icase
, "ab" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
329 TEST_REGEX_SEARCH ( "((?-i:a))b" , perl
| icase
, "ab" , match_default
, make_array ( 0 , 2 , 0 , 1 , - 2 , - 2 ));
330 TEST_REGEX_SEARCH ( "(?-i:a)b" , perl
| icase
, "aB" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
332 TEST_REGEX_SEARCH ( "((?-i:a))b" , perl
| icase
, "aB" , match_default
, make_array ( 0 , 2 , 0 , 1 , - 2 , - 2 ));
333 TEST_REGEX_SEARCH ( "(?-i:a)b" , perl
| icase
, "AB" , match_default
, make_array (- 2 , - 2 ));
334 TEST_REGEX_SEARCH ( "(?-i:a)b" , perl
| icase
, "Ab" , match_default
, make_array (- 2 , - 2 ));
335 TEST_REGEX_SEARCH ( "(?-i:a)b" , perl
| icase
, "aB" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
336 TEST_REGEX_SEARCH ( "((?-i:a))b" , perl
| icase
, "aB" , match_default
, make_array ( 0 , 2 , 0 , 1 , - 2 , - 2 ));
337 TEST_REGEX_SEARCH ( "(?-i:a)b" , perl
| icase
, "Ab" , match_default
, make_array (- 2 , - 2 ));
338 TEST_REGEX_SEARCH ( "(?-i:a)b" , perl
| icase
, "AB" , match_default
, make_array (- 2 , - 2 ));
339 TEST_REGEX_SEARCH ( "((?-i:a.))b" , perl
| icase
, "AB" , match_default
, make_array (- 2 , - 2 ));
340 TEST_REGEX_SEARCH ( "((?-i:a.))b" , perl
| icase
, "A \n B" , match_default
, make_array (- 2 , - 2 ));
341 TEST_REGEX_SEARCH ( "((?s-i:a.))b" , perl
| icase
, "a \n B" , match_default
, make_array ( 0 , 3 , 0 , 2 , - 2 , - 2 ));
343 TEST_REGEX_SEARCH ( "." , perl
, " \n " , match_default
, make_array ( 0 , 1 , - 2 , - 2 ));
344 TEST_REGEX_SEARCH ( "." , perl
, " \n " , match_default
| match_not_dot_newline
, make_array (- 2 , - 2 ));
345 TEST_REGEX_SEARCH ( "." , perl
| mod_s
, " \n " , match_default
, make_array ( 0 , 1 , - 2 , - 2 ));
346 TEST_REGEX_SEARCH ( "." , perl
| mod_s
, " \n " , match_default
| match_not_dot_newline
, make_array ( 0 , 1 , - 2 , - 2 ));
347 TEST_REGEX_SEARCH ( "." , perl
| no_mod_s
, " \n " , match_default
, make_array (- 2 , - 2 ));
348 TEST_REGEX_SEARCH ( "." , perl
| no_mod_s
, " \n " , match_default
| match_not_dot_newline
, make_array (- 2 , - 2 ));
349 TEST_REGEX_SEARCH ( "(?s)." , perl
, " \n " , match_default
, make_array ( 0 , 1 , - 2 , - 2 ));
350 TEST_REGEX_SEARCH ( "(?s)." , perl
, " \n " , match_default
| match_not_dot_newline
, make_array ( 0 , 1 , - 2 , - 2 ));
351 TEST_REGEX_SEARCH ( "(?-s)." , perl
, " \n " , match_default
, make_array (- 2 , - 2 ));
352 TEST_REGEX_SEARCH ( "(?-s)." , perl
, " \n " , match_default
| match_not_dot_newline
, make_array (- 2 , - 2 ));
353 TEST_REGEX_SEARCH ( "(?-xism)d" , perl
, "d" , match_default
, make_array ( 0 , 1 , - 2 , - 2 ));
359 using namespace boost :: regex_constants
;
361 TEST_REGEX_SEARCH ( ".+" , perl
, " \n " , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
362 TEST_REGEX_SEARCH ( ".+" , perl
, " \n " , match_default
| match_not_dot_newline
, make_array ( 0 , 2 , - 2 , 3 , 5 , - 2 , - 2 ));
363 TEST_REGEX_SEARCH ( ".+" , perl
| mod_s
, " \n " , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
364 TEST_REGEX_SEARCH ( ".+" , perl
| mod_s
, " \n " , match_default
| match_not_dot_newline
, make_array ( 0 , 5 , - 2 , - 2 ));
365 TEST_REGEX_SEARCH ( ".+" , perl
| no_mod_s
, " \n " , match_default
, make_array ( 0 , 2 , - 2 , 3 , 5 , - 2 , - 2 ));
366 TEST_REGEX_SEARCH ( ".+" , perl
| no_mod_s
, " \n " , match_default
| match_not_dot_newline
, make_array ( 0 , 2 , - 2 , 3 , 5 , - 2 , - 2 ));
367 TEST_REGEX_SEARCH ( "(?s).+" , perl
, " \n " , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
368 TEST_REGEX_SEARCH ( "(?s).+" , perl
, " \n " , match_default
| match_not_dot_newline
, make_array ( 0 , 5 , - 2 , - 2 ));
369 TEST_REGEX_SEARCH ( "(?-s).+" , perl
, " \n " , match_default
, make_array ( 0 , 2 , - 2 , 3 , 5 , - 2 , - 2 ));
370 TEST_REGEX_SEARCH ( "(?-s).+" , perl
, " \n " , match_default
| match_not_dot_newline
, make_array ( 0 , 2 , - 2 , 3 , 5 , - 2 , - 2 ));
372 const char * big_expression
=
373 " (?: [ \\ 040 \\ t] | \\ ( \n "
374 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] | \\ ( (?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] )* \\ ) )* \n "
375 " \\ ) )* # optional leading comment \n "
377 "[^( \\ 040)<>@,;: \" . \\\\\\ [ \\ ] \\ 000- \\ 037 \\ x80- \\ xff]+ # some number of atom characters... \n "
378 "(?![^( \\ 040)<>@,;: \" . \\\\\\ [ \\ ] \\ 000- \\ 037 \\ x80- \\ xff]) # ..not followed by something that could be part of an atom \n "
380 " \" (?: # opening quote... \n "
381 "[^ \\\\\\ x80- \\ xff \\ n \\ 015 \" ] # Anything except backslash and quote \n "
383 " \\\\ [^ \\ x80- \\ xff] # Escaped something (something != CR) \n "
384 ")* \" # closing quote \n "
386 "(?: (?: [ \\ 040 \\ t] | \\ ( \n "
387 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] | \\ ( (?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] )* \\ ) )* \n "
388 " \\ ) )* \\ . (?: [ \\ 040 \\ t] | \\ ( \n "
389 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] | \\ ( (?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] )* \\ ) )* \n "
391 "[^( \\ 040)<>@,;: \" . \\\\\\ [ \\ ] \\ 000- \\ 037 \\ x80- \\ xff]+ # some number of atom characters... \n "
392 "(?![^( \\ 040)<>@,;: \" . \\\\\\ [ \\ ] \\ 000- \\ 037 \\ x80- \\ xff]) # ..not followed by something that could be part of an atom \n "
394 " \" (?: # opening quote... \n "
395 "[^ \\\\\\ x80- \\ xff \\ n \\ 015 \" ] # Anything except backslash and quote \n "
397 " \\\\ [^ \\ x80- \\ xff] # Escaped something (something != CR) \n "
398 ")* \" # closing quote \n "
399 ") )* # further okay, if led by a period \n "
400 "(?: [ \\ 040 \\ t] | \\ ( \n "
401 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] | \\ ( (?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] )* \\ ) )* \n "
402 " \\ ) )* @ (?: [ \\ 040 \\ t] | \\ ( \n "
403 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] | \\ ( (?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] )* \\ ) )* \n "
405 "[^( \\ 040)<>@,;: \" . \\\\\\ [ \\ ] \\ 000- \\ 037 \\ x80- \\ xff]+ # some number of atom characters... \n "
406 "(?![^( \\ 040)<>@,;: \" . \\\\\\ [ \\ ] \\ 000- \\ 037 \\ x80- \\ xff]) # ..not followed by something that could be part of an atom \n "
408 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015 \\ [ \\ ]] | \\\\ [^ \\ x80- \\ xff] )* # stuff \n "
410 ") # initial subdomain \n "
412 "(?: [ \\ 040 \\ t] | \\ ( \n "
413 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] | \\ ( (?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] )* \\ ) )* \n "
414 " \\ ) )* \\ . # if led by a period... \n "
415 "(?: [ \\ 040 \\ t] | \\ ( \n "
416 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] | \\ ( (?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] )* \\ ) )* \n "
418 "[^( \\ 040)<>@,;: \" . \\\\\\ [ \\ ] \\ 000- \\ 037 \\ x80- \\ xff]+ # some number of atom characters... \n "
419 "(?![^( \\ 040)<>@,;: \" . \\\\\\ [ \\ ] \\ 000- \\ 037 \\ x80- \\ xff]) # ..not followed by something that could be part of an atom \n "
421 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015 \\ [ \\ ]] | \\\\ [^ \\ x80- \\ xff] )* # stuff \n "
423 ") # ...further okay \n "
428 "[^( \\ 040)<>@,;: \" . \\\\\\ [ \\ ] \\ 000- \\ 037 \\ x80- \\ xff]+ # some number of atom characters... \n "
429 "(?![^( \\ 040)<>@,;: \" . \\\\\\ [ \\ ] \\ 000- \\ 037 \\ x80- \\ xff]) # ..not followed by something that could be part of an atom \n "
431 " \" (?: # opening quote... \n "
432 "[^ \\\\\\ x80- \\ xff \\ n \\ 015 \" ] # Anything except backslash and quote \n "
434 " \\\\ [^ \\ x80- \\ xff] # Escaped something (something != CR) \n "
435 ")* \" # closing quote \n "
436 ") # one word, optionally followed by.... \n "
438 "[^()<>@,;: \" . \\\\\\ [ \\ ] \\ x80- \\ xff \\ 000- \\ 010 \\ 012- \\ 037] | # atom and space parts, or... \n "
440 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] | \\ ( (?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] )* \\ ) )* \n "
441 " \\ ) | # comments, or... \n "
442 " \" (?: # opening quote... \n "
443 "[^ \\\\\\ x80- \\ xff \\ n \\ 015 \" ] # Anything except backslash and quote \n "
445 " \\\\ [^ \\ x80- \\ xff] # Escaped something (something != CR) \n "
446 ")* \" # closing quote \n "
449 "< (?: [ \\ 040 \\ t] | \\ ( \n "
450 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] | \\ ( (?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] )* \\ ) )* \n "
451 " \\ ) )* # leading < \n "
452 "(?: @ (?: [ \\ 040 \\ t] | \\ ( \n "
453 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] | \\ ( (?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] )* \\ ) )* \n "
455 "[^( \\ 040)<>@,;: \" . \\\\\\ [ \\ ] \\ 000- \\ 037 \\ x80- \\ xff]+ # some number of atom characters... \n "
456 "(?![^( \\ 040)<>@,;: \" . \\\\\\ [ \\ ] \\ 000- \\ 037 \\ x80- \\ xff]) # ..not followed by something that could be part of an atom \n "
458 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015 \\ [ \\ ]] | \\\\ [^ \\ x80- \\ xff] )* # stuff \n "
460 ") # initial subdomain \n "
462 "(?: [ \\ 040 \\ t] | \\ ( \n "
463 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] | \\ ( (?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] )* \\ ) )* \n "
464 " \\ ) )* \\ . # if led by a period... \n "
465 "(?: [ \\ 040 \\ t] | \\ ( \n "
466 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] | \\ ( (?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] )* \\ ) )* \n "
468 "[^( \\ 040)<>@,;: \" . \\\\\\ [ \\ ] \\ 000- \\ 037 \\ x80- \\ xff]+ # some number of atom characters... \n "
469 "(?![^( \\ 040)<>@,;: \" . \\\\\\ [ \\ ] \\ 000- \\ 037 \\ x80- \\ xff]) # ..not followed by something that could be part of an atom \n "
471 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015 \\ [ \\ ]] | \\\\ [^ \\ x80- \\ xff] )* # stuff \n "
473 ") # ...further okay \n "
475 "(?: (?: [ \\ 040 \\ t] | \\ ( \n "
476 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] | \\ ( (?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] )* \\ ) )* \n "
477 " \\ ) )* , (?: [ \\ 040 \\ t] | \\ ( \n "
478 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] | \\ ( (?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] )* \\ ) )* \n "
479 " \\ ) )* @ (?: [ \\ 040 \\ t] | \\ ( \n "
480 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] | \\ ( (?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] )* \\ ) )* \n "
482 "[^( \\ 040)<>@,;: \" . \\\\\\ [ \\ ] \\ 000- \\ 037 \\ x80- \\ xff]+ # some number of atom characters... \n "
483 "(?![^( \\ 040)<>@,;: \" . \\\\\\ [ \\ ] \\ 000- \\ 037 \\ x80- \\ xff]) # ..not followed by something that could be part of an atom \n "
485 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015 \\ [ \\ ]] | \\\\ [^ \\ x80- \\ xff] )* # stuff \n "
487 ") # initial subdomain \n "
489 "(?: [ \\ 040 \\ t] | \\ ( \n "
490 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] | \\ ( (?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] )* \\ ) )* \n "
491 " \\ ) )* \\ . # if led by a period... \n "
492 "(?: [ \\ 040 \\ t] | \\ ( \n "
493 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] | \\ ( (?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] )* \\ ) )* \n "
495 "[^( \\ 040)<>@,;: \" . \\\\\\ [ \\ ] \\ 000- \\ 037 \\ x80- \\ xff]+ # some number of atom characters... \n "
496 "(?![^( \\ 040)<>@,;: \" . \\\\\\ [ \\ ] \\ 000- \\ 037 \\ x80- \\ xff]) # ..not followed by something that could be part of an atom \n "
498 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015 \\ [ \\ ]] | \\\\ [^ \\ x80- \\ xff] )* # stuff \n "
500 ") # ...further okay \n "
502 ")* # further okay, if led by comma \n "
503 ": # closing colon \n "
504 "(?: [ \\ 040 \\ t] | \\ ( \n "
505 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] | \\ ( (?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] )* \\ ) )* \n "
506 " \\ ) )* )? # optional route \n "
508 "[^( \\ 040)<>@,;: \" . \\\\\\ [ \\ ] \\ 000- \\ 037 \\ x80- \\ xff]+ # some number of atom characters... \n "
509 "(?![^( \\ 040)<>@,;: \" . \\\\\\ [ \\ ] \\ 000- \\ 037 \\ x80- \\ xff]) # ..not followed by something that could be part of an atom \n "
511 " \" (?: # opening quote... \n "
512 "[^ \\\\\\ x80- \\ xff \\ n \\ 015 \" ] # Anything except backslash and quote \n "
514 " \\\\ [^ \\ x80- \\ xff] # Escaped something (something != CR) \n "
515 ")* \" # closing quote \n "
517 "(?: (?: [ \\ 040 \\ t] | \\ ( \n "
518 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] | \\ ( (?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] )* \\ ) )* \n "
519 " \\ ) )* \\ . (?: [ \\ 040 \\ t] | \\ ( \n "
520 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] | \\ ( (?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] )* \\ ) )* \n "
522 "[^( \\ 040)<>@,;: \" . \\\\\\ [ \\ ] \\ 000- \\ 037 \\ x80- \\ xff]+ # some number of atom characters... \n "
523 "(?![^( \\ 040)<>@,;: \" . \\\\\\ [ \\ ] \\ 000- \\ 037 \\ x80- \\ xff]) # ..not followed by something that could be part of an atom \n "
525 " \" (?: # opening quote... \n "
526 "[^ \\\\\\ x80- \\ xff \\ n \\ 015 \" ] # Anything except backslash and quote \n "
528 " \\\\ [^ \\ x80- \\ xff] # Escaped something (something != CR) \n "
529 ")* \" # closing quote \n "
530 ") )* # further okay, if led by a period \n "
531 "(?: [ \\ 040 \\ t] | \\ ( \n "
532 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] | \\ ( (?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] )* \\ ) )* \n "
533 " \\ ) )* @ (?: [ \\ 040 \\ t] | \\ ( \n "
534 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] | \\ ( (?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] )* \\ ) )* \n "
536 "[^( \\ 040)<>@,;: \" . \\\\\\ [ \\ ] \\ 000- \\ 037 \\ x80- \\ xff]+ # some number of atom characters... \n "
537 "(?![^( \\ 040)<>@,;: \" . \\\\\\ [ \\ ] \\ 000- \\ 037 \\ x80- \\ xff]) # ..not followed by something that could be part of an atom \n "
539 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015 \\ [ \\ ]] | \\\\ [^ \\ x80- \\ xff] )* # stuff \n "
541 ") # initial subdomain \n "
543 "(?: [ \\ 040 \\ t] | \\ ( \n "
544 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] | \\ ( (?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] )* \\ ) )* \n "
545 " \\ ) )* \\ . # if led by a period... \n "
546 "(?: [ \\ 040 \\ t] | \\ ( \n "
547 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] | \\ ( (?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] )* \\ ) )* \n "
549 "[^( \\ 040)<>@,;: \" . \\\\\\ [ \\ ] \\ 000- \\ 037 \\ x80- \\ xff]+ # some number of atom characters... \n "
550 "(?![^( \\ 040)<>@,;: \" . \\\\\\ [ \\ ] \\ 000- \\ 037 \\ x80- \\ xff]) # ..not followed by something that could be part of an atom \n "
552 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015 \\ [ \\ ]] | \\\\ [^ \\ x80- \\ xff] )* # stuff \n "
554 ") # ...further okay \n "
557 "(?: [ \\ 040 \\ t] | \\ ( \n "
558 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] | \\ ( (?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] )* \\ ) )* \n "
559 " \\ ) )* > # trailing > \n "
560 "# name and address \n "
561 ") (?: [ \\ 040 \\ t] | \\ ( \n "
562 "(?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] | \\ ( (?: [^ \\\\\\ x80- \\ xff \\ n \\ 015()] | \\\\ [^ \\ x80- \\ xff] )* \\ ) )* \n "
563 " \\ ) )* # optional trailing comment \n "
567 test_info
< char >:: set_info ( __FILE__
, __LINE__
,
569 perl
| mod_x
, "Alan Other <user@dom.ain>" , match_default
,
570 make_array ( 0 , 25 , - 2 , - 2 ));
571 test ( char ( 0 ), test_regex_search_tag ());
573 #if !defined(BOOST_NO_WREGEX) && !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS) && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
575 std :: string
st ( big_expression
);
576 test_info
< wchar_t >:: set_info ( __FILE__
, __LINE__
,
577 std :: wstring ( st
. begin (), st
. end ()),
578 perl
| mod_x
, L
"Alan Other <user@dom.ain>" , match_default
,
579 make_array ( 0 , 25 , - 2 , - 2 ));
580 test ( char ( 0 ), test_regex_search_tag ());
584 test_info
< char >:: set_info ( __FILE__
, __LINE__
,
586 perl
| mod_x
, "<user@dom.ain>" , match_default
,
587 make_array ( 1 , 13 , - 2 , - 2 ));
588 test ( char ( 0 ), test_regex_search_tag ());
590 #if !defined(BOOST_NO_WREGEX) && !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS) && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
592 std :: string
st ( big_expression
);
593 test_info
< wchar_t >:: set_info ( __FILE__
, __LINE__
,
594 std :: wstring ( st
. begin (), st
. end ()),
595 perl
| mod_x
, L
"<user@dom.ain>" , match_default
,
596 make_array ( 1 , 13 , - 2 , - 2 ));
597 test ( char ( 0 ), test_regex_search_tag ());
601 test_info
< char >:: set_info ( __FILE__
, __LINE__
,
603 perl
| mod_x
, " \" A. Other \" <user.1234@dom.ain> (a comment)" , match_default
,
604 make_array ( 0 , 42 , - 2 , - 2 ));
605 test ( char ( 0 ), test_regex_search_tag ());
607 #if !defined(BOOST_NO_WREGEX) && !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS) && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
609 std :: string
st ( big_expression
);
610 test_info
< wchar_t >:: set_info ( __FILE__
, __LINE__
,
611 std :: wstring ( st
. begin (), st
. end ()),
612 perl
| mod_x
, L
" \" A. Other \" <user.1234@dom.ain> (a comment)" , match_default
,
613 make_array ( 0 , 42 , - 2 , - 2 ));
614 test ( char ( 0 ), test_regex_search_tag ());
618 test_info
< char >:: set_info ( __FILE__
, __LINE__
,
620 perl
| mod_x
, "A. Other <user.1234@dom.ain> (a comment)" , match_default
,
621 make_array ( 2 , 40 , - 2 , - 2 ));
622 test ( char ( 0 ), test_regex_search_tag ());
624 #if !defined(BOOST_NO_WREGEX) && !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS) && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
626 std :: string
st ( big_expression
);
627 test_info
< wchar_t >:: set_info ( __FILE__
, __LINE__
,
628 std :: wstring ( st
. begin (), st
. end ()),
629 perl
| mod_x
, L
"A. Other <user.1234@dom.ain> (a comment)" , match_default
,
630 make_array ( 2 , 40 , - 2 , - 2 ));
631 test ( char ( 0 ), test_regex_search_tag ());
635 test_info
< char >:: set_info ( __FILE__
, __LINE__
,
637 perl
| mod_x
, " \" /s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/ \" @x400-re.lay" , match_default
,
638 make_array ( 0 , 61 , - 2 , - 2 ));
639 test ( char ( 0 ), test_regex_search_tag ());
641 #if !defined(BOOST_NO_WREGEX) && !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS) && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
643 std :: string
st ( big_expression
);
644 test_info
< wchar_t >:: set_info ( __FILE__
, __LINE__
,
645 std :: wstring ( st
. begin (), st
. end ()),
646 perl
| mod_x
, L
" \" /s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/ \" @x400-re.lay" , match_default
,
647 make_array ( 0 , 61 , - 2 , - 2 ));
648 test ( char ( 0 ), test_regex_search_tag ());
652 test_info
< char >:: set_info ( __FILE__
, __LINE__
,
654 perl
| mod_x
, "A missing angle <user@some.where" , match_default
,
655 make_array ( 17 , 32 , - 2 , - 2 ));
656 test ( char ( 0 ), test_regex_search_tag ());
658 #if !defined(BOOST_NO_WREGEX) && !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS) && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
660 std :: string
st ( big_expression
);
661 test_info
< wchar_t >:: set_info ( __FILE__
, __LINE__
,
662 std :: wstring ( st
. begin (), st
. end ()),
663 perl
| mod_x
, L
"A missing angle <user@some.where" , match_default
,
664 make_array ( 17 , 32 , - 2 , - 2 ));
665 test ( char ( 0 ), test_regex_search_tag ());
670 void test_mark_resets ()
672 using namespace boost :: regex_constants
;
674 TEST_REGEX_SEARCH ( "(?|(abc)|(xyz))" , perl
, "abc" , match_default
, make_array ( 0 , 3 , 0 , 3 , - 2 , - 2 ));
675 TEST_REGEX_SEARCH ( "(?|(abc)|(xyz))" , perl
, "xyz" , match_default
, make_array ( 0 , 3 , 0 , 3 , - 2 , - 2 ));
676 TEST_REGEX_SEARCH ( "(x)(?|(abc)|(xyz))(x)" , perl
, "xabcx" , match_default
, make_array ( 0 , 5 , 0 , 1 , 1 , 4 , 4 , 5 , - 2 , - 2 ));
677 TEST_REGEX_SEARCH ( "(x)(?|(abc)|(xyz))(x)" , perl
, "xxyzx" , match_default
, make_array ( 0 , 5 , 0 , 1 , 1 , 4 , 4 , 5 , - 2 , - 2 ));
678 TEST_REGEX_SEARCH ( "(x)(?|(abc)(pqr)|(xyz))(x)" , perl
, "xabcpqrx" , match_default
, make_array ( 0 , 8 , 0 , 1 , 1 , 4 , 4 , 7 , 7 , 8 , - 2 , - 2 ));
679 TEST_REGEX_SEARCH ( "(x)(?|(abc)(pqr)|(xyz))(x)" , perl
, "xxyzx" , match_default
, make_array ( 0 , 5 , 0 , 1 , 1 , 4 , - 1 , - 1 , 4 , 5 , - 2 , - 2 ));
680 TEST_REGEX_SEARCH ( "(?|(abc)|(xyz)) \\ 1" , perl
, "abcabc" , match_default
, make_array ( 0 , 6 , 0 , 3 , - 2 , - 2 ));
681 TEST_REGEX_SEARCH ( "(?|(abc)|(xyz)) \\ 1" , perl
, "xyzxyz" , match_default
, make_array ( 0 , 6 , 0 , 3 , - 2 , - 2 ));
682 TEST_REGEX_SEARCH ( "(?|(abc)|(xyz)) \\ 1" , perl
, "abcxyz" , match_default
, make_array (- 2 , - 2 ));
683 TEST_REGEX_SEARCH ( "(?|(abc)|(xyz)) \\ 1" , perl
, "xyzabc" , match_default
, make_array (- 2 , - 2 ));
684 TEST_REGEX_SEARCH ( "(?|(abc)|(xyz))(?1)" , perl
, "abcabc" , match_default
, make_array ( 0 , 6 , 0 , 3 , - 2 , - 2 ));
685 TEST_REGEX_SEARCH ( "(?|(abc)|(xyz))(?1)" , perl
, "xyzabc" , match_default
, make_array ( 0 , 6 , 0 , 3 , - 2 , - 2 ));
686 TEST_REGEX_SEARCH ( "(?|(abc)|(xyz))(?1)" , perl
, "xyzxyz" , match_default
, make_array (- 2 , - 2 ));
687 TEST_REGEX_SEARCH ( "^X(?5)(a)(?|(b)|(q))(c)(d)(Y)" , perl
, "XYabcdY" , match_default
, make_array ( 0 , 7 , 2 , 3 , 3 , 4 , 4 , 5 , 5 , 6 , 6 , 7 , - 2 , - 2 ));
688 TEST_INVALID_REGEX ( "^X(?5)(a)(?|(b)|(q))(c)(d)Y" , perl
);
689 TEST_REGEX_SEARCH ( "^X(?&N)(a)(?|(b)|(q))(c)(d)(?<N>Y)" , perl
, "XYabcdY" , match_default
, make_array ( 0 , 7 , 2 , 3 , 3 , 4 , 4 , 5 , 5 , 6 , 6 , 7 , - 2 , - 2 ));
690 TEST_REGEX_SEARCH ( "^X(?7)(a)(?|(b)|(q)(r)(s))(c)(d)(Y)" , perl
, "XYabcdY" , match_default
, make_array ( 0 , 7 , 2 , 3 , 3 , 4 , - 1 , - 1 , - 1 , - 1 , 4 , 5 , 5 , 6 , 6 , 7 , - 2 , - 2 ));
691 TEST_REGEX_SEARCH ( "^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)" , perl
, "XYabcdY" , match_default
, make_array ( 0 , 7 , 2 , 3 , 3 , 4 , - 1 , - 1 , - 1 , - 1 , 4 , 5 , 5 , 6 , 6 , 7 , - 2 , - 2 ));
692 TEST_REGEX_SEARCH ( "^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)" , perl
, "XYabcdY" , match_default
, make_array ( 0 , 7 , 2 , 3 , 3 , 4 , - 1 , - 1 , - 1 , - 1 , 4 , 5 , 5 , 6 , 6 , 7 , - 2 , - 2 ));
693 TEST_REGEX_SEARCH ( "(?|(abc)|(?:((?:xyz)))|(123))" , perl
, "abc" , match_default
, make_array ( 0 , 3 , 0 , 3 , - 2 , - 2 ));
694 TEST_REGEX_SEARCH ( "(?|(abc)|(?:)((?:)xyz)|(123))" , perl
, "xyz" , match_default
, make_array ( 0 , 3 , 0 , 3 , - 2 , - 2 ));
695 TEST_REGEX_SEARCH ( "(?|(abc)|((?:(x)|(y)|(z)))|(123))" , perl
, "y" , match_default
, make_array ( 0 , 1 , 0 , 1 , - 1 , - 1 , 0 , 1 , - 1 , - 1 , - 2 , - 2 ));
696 TEST_REGEX_SEARCH ( "(?|(abc)|((?|(x)|(y)|(z)))|(123))" , perl
, "y" , match_default
, make_array ( 0 , 1 , 0 , 1 , 0 , 1 , - 2 , - 2 ));
697 TEST_REGEX_SEARCH ( "(?|(abc)|((?|(x)|(y)|(z)))|(123))" , perl
, "abc" , match_default
, make_array ( 0 , 3 , 0 , 3 , - 1 , - 1 , - 2 , - 2 ));
698 TEST_REGEX_SEARCH ( "(?|(abc)|((?|(x)|(y)|(z)))|(123))" , perl
, "123" , match_default
, make_array ( 0 , 3 , 0 , 3 , - 1 , - 1 , - 2 , - 2 ));
699 TEST_REGEX_SEARCH ( "(?|(abc)|((x)|(y)|(z))|(123))" , perl
, "z" , match_default
, make_array ( 0 , 1 , 0 , 1 , - 1 , - 1 , - 1 , - 1 , 0 , 1 , - 2 , - 2 ));
700 TEST_REGEX_SEARCH ( "(?|(abc)|((x)|(y)|(z))|(123))" , perl
, "abc" , match_default
, make_array ( 0 , 3 , 0 , 3 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 2 , - 2 ));
701 TEST_REGEX_SEARCH ( "(?|(abc)|((x)|(y)|(z))|(123))" , perl
, "123" , match_default
, make_array ( 0 , 3 , 0 , 3 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 2 , - 2 ));
704 void test_recursion ()
706 using namespace boost :: regex_constants
;
708 TEST_INVALID_REGEX ( "(a(?2)b)" , perl
);
709 TEST_INVALID_REGEX ( "(a(?1b))" , perl
);
710 TEST_REGEX_SEARCH ( "(a(?1)b)" , perl
, "abc" , match_default
, make_array (- 2 , - 2 ));
711 TEST_REGEX_SEARCH ( "(a(?1)+b)" , perl
, "abc" , match_default
, make_array (- 2 , - 2 ));
712 TEST_REGEX_SEARCH ( "^([^()]| \\ ((?1)* \\ ))*$" , perl
, "abc" , match_default
, make_array ( 0 , 3 , 2 , 3 , - 2 , - 2 ));
713 TEST_REGEX_SEARCH ( "^([^()]| \\ ((?1)* \\ ))*$" , perl
, "a(b)c" , match_default
, make_array ( 0 , 5 , 4 , 5 , - 2 , - 2 ));
714 TEST_REGEX_SEARCH ( "^([^()]| \\ ((?1)* \\ ))*$" , perl
, "a(b(c))d" , match_default
, make_array ( 0 , 8 , 7 , 8 , - 2 , - 2 ));
715 TEST_REGEX_SEARCH ( "^([^()]| \\ ((?1)* \\ ))*$" , perl
, "a(b(c)d" , match_default
, make_array (- 2 , - 2 ));
716 TEST_REGEX_SEARCH ( "^>abc>([^()]| \\ ((?1)* \\ ))*<xyz<$" , perl
, ">abc>123<xyz<" , match_default
, make_array ( 0 , 13 , 7 , 8 , - 2 , - 2 ));
717 TEST_REGEX_SEARCH ( "^>abc>([^()]| \\ ((?1)* \\ ))*<xyz<$" , perl
, ">abc>1(2)3<xyz<" , match_default
, make_array ( 0 , 15 , 9 , 10 , - 2 , - 2 ));
718 TEST_REGEX_SEARCH ( "^>abc>([^()]| \\ ((?1)* \\ ))*<xyz<$" , perl
, ">abc>(1(2)3)<xyz<" , match_default
, make_array ( 0 , 17 , 5 , 12 , - 2 , - 2 ));
719 //TEST_REGEX_SEARCH("^\\W*(?:((.)\\W*(?1)\\W*\\2|)|((.)\\W*(?3)\\W*\\4|\\W*.\\W*))\\W*$", perl|icase, "1221", match_default, make_array(0, 4, 0, 4, 0, 1, -1, -1, -1, -1, -2, -2));
720 TEST_REGEX_SEARCH ( "^ \\ W*(?:((.) \\ W*(?1) \\ W* \\ 2|)|((.) \\ W*(?3) \\ W* \\ 4| \\ W*. \\ W*)) \\ W*$" , perl
| icase
, "Satan, oscillate my metallic sonatas!" , match_default
, make_array ( 0 , 37 , - 1 , - 1 , - 1 , - 1 , 0 , 36 , 0 , 1 , - 2 , - 2 ));
721 //TEST_REGEX_SEARCH("^\\W*(?:((.)\\W*(?1)\\W*\\2|)|((.)\\W*(?3)\\W*\\4|\\W*.\\W*))\\W*$", perl|icase, "A man, a plan, a canal: Panama!", match_default, make_array(0, 31, -1, -1, -1, -1, 0, 30, 0, 1, -2, -2));
722 //TEST_REGEX_SEARCH("^\\W*(?:((.)\\W*(?1)\\W*\\2|)|((.)\\W*(?3)\\W*\\4|\\W*.\\W*))\\W*$", perl|icase, "Able was I ere I saw Elba.", match_default, make_array(0, 26, -1, -1, -1, -1, 0, 25, 0, 1, -2, -2));
723 TEST_REGEX_SEARCH ( "^ \\ W*(?:((.) \\ W*(?1) \\ W* \\ 2|)|((.) \\ W*(?3) \\ W* \\ 4| \\ W*. \\ W*)) \\ W*$" , perl
| icase
, "The quick brown fox" , match_default
, make_array (- 2 , - 2 ));
724 TEST_REGEX_SEARCH ( "^( \\ d+| \\ ((?1)([+*-])(?1) \\ )|-(?1))$" , perl
| icase
, "12" , match_default
, make_array ( 0 , 2 , 0 , 2 , - 1 , - 1 , - 2 , - 2 ));
725 //TEST_REGEX_SEARCH("^(\\d+|\\((?1)([+*-])(?1)\\)|-(?1))$", perl|icase, "(((2+2)*-3)-7)", match_default, make_array(0, 14, 0, 14, 11, 12, -2, -2));
726 TEST_REGEX_SEARCH ( "^( \\ d+| \\ ((?1)([+*-])(?1) \\ )|-(?1))$" , perl
| icase
, "-12" , match_default
, make_array ( 0 , 3 , 0 , 3 , - 1 , - 1 , - 2 , - 2 ));
727 TEST_REGEX_SEARCH ( "^( \\ d+| \\ ((?1)([+*-])(?1) \\ )|-(?1))$" , perl
| icase
, "((2+2)*-3)-7)" , match_default
, make_array (- 2 , - 2 ));
728 TEST_REGEX_SEARCH ( "^(x(y|(?1){2})z)" , perl
| icase
, "xyz" , match_default
, make_array ( 0 , 3 , 0 , 3 , 1 , 2 , - 2 , - 2 ));
729 TEST_REGEX_SEARCH ( "^(x(y|(?1){2})z)" , perl
| icase
, "xxyzxyzz" , match_default
, make_array ( 0 , 8 , 0 , 8 , 1 , 7 , - 2 , - 2 ));
730 TEST_REGEX_SEARCH ( "^(x(y|(?1){2})z)" , perl
| icase
, "xxyzz" , match_default
, make_array (- 2 , - 2 ));
731 TEST_REGEX_SEARCH ( "^(x(y|(?1){2})z)" , perl
| icase
, "xxyzxyzxyzz" , match_default
, make_array (- 2 , - 2 ));
732 TEST_INVALID_REGEX ( "(?1)" , perl
);
733 TEST_INVALID_REGEX ( "((?2)(abc)" , perl
);
734 TEST_REGEX_SEARCH ( "^(a|b|c)=(?1)+" , perl
| icase
, "a=a" , match_default
, make_array ( 0 , 3 , 0 , 1 , - 2 , - 2 ));
735 TEST_REGEX_SEARCH ( "^(a|b|c)=(?1)+" , perl
| icase
, "a=b" , match_default
, make_array ( 0 , 3 , 0 , 1 , - 2 , - 2 ));
736 TEST_REGEX_SEARCH ( "^(a|b|c)=(?1)+" , perl
| icase
, "a=bc" , match_default
, make_array ( 0 , 4 , 0 , 1 , - 2 , - 2 ));
737 TEST_REGEX_SEARCH ( "^(a|b|c)=((?1))+" , perl
| icase
, "a=a" , match_default
, make_array ( 0 , 3 , 0 , 1 , 2 , 3 , - 2 , - 2 ));
738 TEST_REGEX_SEARCH ( "^(a|b|c)=((?1))+" , perl
| icase
, "a=b" , match_default
, make_array ( 0 , 3 , 0 , 1 , 2 , 3 , - 2 , - 2 ));
739 TEST_REGEX_SEARCH ( "^(a|b|c)=((?1))+" , perl
| icase
, "a=bc" , match_default
, make_array ( 0 , 4 , 0 , 1 , 3 , 4 , - 2 , - 2 ));
740 TEST_REGEX_SEARCH ( "^(?1)(abc)" , perl
| icase
, "abcabc" , match_default
, make_array ( 0 , 6 , 3 , 6 , - 2 , - 2 ));
741 TEST_REGEX_SEARCH ( "(?1)X(?<abc>P)" , perl
| icase
, "abcPXP123" , match_default
, make_array ( 3 , 6 , 5 , 6 , - 2 , - 2 ));
742 TEST_REGEX_SEARCH ( "(abc)(?i:(?1))" , perl
| icase
, "defabcabcxyz" , match_default
, make_array ( 3 , 9 , 3 , 6 , - 2 , - 2 ));
743 TEST_REGEX_SEARCH ( "(abc)(?i:(?1))" , perl
, "DEFabcABCXYZ" , match_default
, make_array (- 2 , - 2 ));
744 TEST_REGEX_SEARCH ( "(abc)(?i:(?1)abc)" , perl
, "DEFabcABCABCXYZ" , match_default
, make_array (- 2 , - 2 ));
745 TEST_REGEX_SEARCH ( "(abc)(?:(?i)(?1))" , perl
, "defabcabcxyz" , match_default
, make_array ( 3 , 9 , 3 , 6 , - 2 , - 2 ));
746 TEST_REGEX_SEARCH ( "(abc)(?:(?i)(?1))" , perl
, "DEFabcABCXYZ" , match_default
, make_array (- 2 , - 2 ));
747 TEST_REGEX_SEARCH ( "(?|(abc)|(xyz))(?1)" , perl
, "abcabc" , match_default
, make_array ( 0 , 6 , 0 , 3 , - 2 , - 2 ));
748 TEST_REGEX_SEARCH ( "(?|(abc)|(xyz))(?1)" , perl
, "xyzabc" , match_default
, make_array ( 0 , 6 , 0 , 3 , - 2 , - 2 ));
749 TEST_REGEX_SEARCH ( "(?|(abc)|(xyz))(?1)" , perl
, "xyzxyz" , match_default
, make_array (- 2 , - 2 ));
750 TEST_REGEX_SEARCH ( "(?1)[]a()b](abc)" , perl
, "abcbabc" , match_default
, make_array ( 0 , 7 , 4 , 7 , - 2 , - 2 ));
751 TEST_REGEX_SEARCH ( "(?1)[]a()b](abc)" , perl
, "abcXabc" , match_default
, make_array (- 2 , - 2 ));
752 TEST_REGEX_SEARCH ( "(?1)[^]a()b](abc)" , perl
, "abcXabc" , match_default
, make_array ( 0 , 7 , 4 , 7 , - 2 , - 2 ));
753 TEST_REGEX_SEARCH ( "(?1)[^]a()b](abc)" , perl
, "abcbabc" , match_default
, make_array (- 2 , - 2 ));
754 TEST_REGEX_SEARCH ( "(?2)[]a()b](abc)(xyz)" , perl
, "xyzbabcxyz" , match_default
, make_array ( 0 , 10 , 4 , 7 , 7 , 10 , - 2 , - 2 ));
755 TEST_REGEX_SEARCH ( "^X(?5)(a)(?|(b)|(q))(c)(d)(Y)" , perl
, "XYabcdY" , match_default
, make_array ( 0 , 7 , 2 , 3 , 3 , 4 , 4 , 5 , 5 , 6 , 6 , 7 , - 2 , - 2 ));
756 TEST_INVALID_REGEX ( "^X(?5)(a)(?|(b)|(q))(c)(d)Y" , perl
);
757 TEST_REGEX_SEARCH ( "^X(?7)(a)(?|(b)|(q)(r)(s))(c)(d)(Y)" , perl
, "XYabcdY" , match_default
, make_array ( 0 , 7 , 2 , 3 , 3 , 4 , - 1 , - 1 , - 1 , - 1 , 4 , 5 , 5 , 6 , 6 , 7 , - 2 , - 2 ));
758 TEST_REGEX_SEARCH ( "^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)" , perl
, "XYabcdY" , match_default
, make_array ( 0 , 7 , 2 , 3 , 3 , 4 , - 1 , - 1 , - 1 , - 1 , 4 , 5 , 5 , 6 , 6 , 7 , - 2 , - 2 ));
759 TEST_REGEX_SEARCH ( "^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)" , perl
, "XYabcdY" , match_default
, make_array ( 0 , 7 , 2 , 3 , 3 , 4 , - 1 , - 1 , - 1 , - 1 , 4 , 5 , 5 , 6 , 6 , 7 , - 2 , - 2 ));
760 TEST_REGEX_SEARCH_W ( L
" \\ x{100}*( \\ d+| \" (?1) \" )" , perl
, L
"1234" , match_default
, make_array ( 0 , 4 , 0 , 4 , - 2 , - 2 ));
761 TEST_REGEX_SEARCH_W ( L
" \\ x{100}*( \\ d+| \" (?1) \" )" , perl
, L
" \" 1234 \" " , match_default
, make_array ( 0 , 6 , 0 , 6 , - 2 , - 2 ));
762 TEST_REGEX_SEARCH_W ( L
" \\ x{100}*( \\ d+| \" (?1) \" )" , perl
, L
" \x10 0" L
"1234" , match_default
, make_array ( 0 , 5 , 1 , 5 , - 2 , - 2 ));
763 TEST_REGEX_SEARCH_W ( L
" \\ x{100}*( \\ d+| \" (?1) \" )" , perl
, L
" \"\x10 0" L
"1234 \" " , match_default
, make_array ( 1 , 6 , 2 , 6 , - 2 , - 2 ));
764 TEST_REGEX_SEARCH_W ( L
" \\ x{100}*( \\ d+| \" (?1) \" )" , perl
, L
" \x10 0 \x10 0" L
"12ab" , match_default
, make_array ( 0 , 4 , 2 , 4 , - 2 , - 2 ));
765 TEST_REGEX_SEARCH_W ( L
" \\ x{100}*( \\ d+| \" (?1) \" )" , perl
, L
" \x10 0 \x10 0" L
" \" 12 \" " , match_default
, make_array ( 0 , 6 , 2 , 6 , - 2 , - 2 ));
766 TEST_REGEX_SEARCH_W ( L
" \\ x{100}*( \\ d+| \" (?1) \" )" , perl
, L
" \x10 0 \x10 0" L
"abcd" , match_default
, make_array (- 2 , - 2 ));
768 TEST_REGEX_SEARCH ( "(ab|c)(?-1)" , perl
, "abc" , match_default
, make_array ( 0 , 3 , 0 , 2 , - 2 , - 2 ));
769 TEST_REGEX_SEARCH ( "xy(?+1)(abc)" , perl
, "xyabcabc" , match_default
, make_array ( 0 , 8 , 5 , 8 , - 2 , - 2 ));
770 TEST_REGEX_SEARCH ( "xy(?+1)(abc)" , perl
, "xyabc" , match_default
, make_array (- 2 , - 2 ));
771 TEST_INVALID_REGEX ( "x(?-0)y" , perl
);
772 TEST_INVALID_REGEX ( "x(?-1)y" , perl
);
773 TEST_INVALID_REGEX ( "x(?+0)y" , perl
);
774 TEST_INVALID_REGEX ( "x(?+1)y" , perl
);
775 TEST_REGEX_SEARCH ( "^(?+1)(?<a>x|y){0}z" , perl
, "xzxx" , match_default
, make_array ( 0 , 2 , - 1 , - 1 , - 2 , - 2 ));
776 TEST_REGEX_SEARCH ( "^(?+1)(?<a>x|y){0}z" , perl
, "yzyy" , match_default
, make_array ( 0 , 2 , - 1 , - 1 , - 2 , - 2 ));
777 TEST_REGEX_SEARCH ( "^(?+1)(?<a>x|y){0}z" , perl
, "xxz" , match_default
, make_array (- 2 , - 2 ));
779 // Now recurse to sub-expression zero:
780 TEST_REGEX_SEARCH ( " \\ ((?:(?>[^()]+)|(?0))* \\ )" , perl
, "(abcd)" , match_default
, make_array ( 0 , 6 , - 2 , - 2 ));
781 TEST_REGEX_SEARCH ( " \\ ((?:(?>[^()]+)|(?0))* \\ )" , perl
, "(abcd)xyz" , match_default
, make_array ( 0 , 6 , - 2 , - 2 ));
782 TEST_REGEX_SEARCH ( " \\ ((?:(?>[^()]+)|(?0))* \\ )" , perl
, "xyz(abcd)" , match_default
, make_array ( 3 , 9 , - 2 , - 2 ));
783 TEST_REGEX_SEARCH ( " \\ ((?:(?>[^()]+)|(?0))* \\ )" , perl
, "(ab(xy)cd)pqr" , match_default
, make_array ( 0 , 10 , - 2 , - 2 ));
784 TEST_REGEX_SEARCH ( " \\ ((?:(?>[^()]+)|(?0))* \\ )" , perl
, "(ab(xycd)pqr" , match_default
, make_array ( 3 , 9 , - 2 , - 2 ));
785 TEST_REGEX_SEARCH ( " \\ ((?:(?>[^()]+)|(?0))* \\ )" , perl
, "() abc ()" , match_default
, make_array ( 0 , 2 , - 2 , 7 , 9 , - 2 , - 2 ));
786 TEST_REGEX_SEARCH ( " \\ ((?:(?>[^()]+)|(?0))* \\ )" , perl
, "12(abcde(fsh)xyz(foo(bar))lmno)89" , match_default
, make_array ( 2 , 31 , - 2 , - 2 ));
787 TEST_REGEX_SEARCH ( " \\ ((?:(?>[^()]+)|(?0))* \\ )" , perl
, "abcd" , match_default
, make_array (- 2 , - 2 ));
788 TEST_REGEX_SEARCH ( " \\ ((?:(?>[^()]+)|(?0))* \\ )" , perl
, "abcd)" , match_default
, make_array (- 2 , - 2 ));
789 TEST_REGEX_SEARCH ( " \\ ((?:(?>[^()]+)|(?0))* \\ )" , perl
, "(abcd" , match_default
, make_array (- 2 , - 2 ));
791 TEST_REGEX_SEARCH ( " \\ ( ( (?>[^()]+) | (?0) )* \\ ) " , perl
| mod_x
, "(ab(xy)cd)pqr" , match_default
, make_array ( 0 , 10 , 7 , 9 , - 2 , - 2 ));
792 TEST_REGEX_SEARCH ( " \\ ( ( (?>[^()]+) | (?0) )* \\ ) " , perl
| mod_x
, "1(abcd)(x(y)z)pqr" , match_default
, make_array ( 1 , 7 , 2 , 6 , - 2 , 7 , 14 , 12 , 13 , - 2 , - 2 ));
793 TEST_REGEX_SEARCH ( " \\ ( (?: (?>[^()]+) | (?0) ) \\ ) " , perl
| mod_x
, "(abcd)" , match_default
, make_array ( 0 , 6 , - 2 , - 2 ));
794 TEST_REGEX_SEARCH ( " \\ ( (?: (?>[^()]+) | (?0) ) \\ ) " , perl
| mod_x
, "(ab(xy)cd)" , match_default
, make_array ( 3 , 7 , - 2 , - 2 ));
795 TEST_REGEX_SEARCH ( " \\ ( (?: (?>[^()]+) | (?0) ) \\ ) " , perl
| mod_x
, "(a(b(c)d)e)" , match_default
, make_array ( 4 , 7 , - 2 , - 2 ));
796 TEST_REGEX_SEARCH ( " \\ ( (?: (?>[^()]+) | (?0) ) \\ ) " , perl
| mod_x
, "((ab))" , match_default
, make_array ( 0 , 6 , - 2 , - 2 ));
797 TEST_REGEX_SEARCH ( " \\ ( (?: (?>[^()]+) | (?0) ) \\ ) " , perl
| mod_x
, "()" , match_default
, make_array (- 2 , - 2 ));
798 TEST_REGEX_SEARCH ( " \\ ( (?: (?>[^()]+) | (?0) )? \\ ) " , perl
| mod_x
, "()" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
799 TEST_REGEX_SEARCH ( " \\ ( (?: (?>[^()]+) | (?0) )? \\ ) " , perl
| mod_x
, "12(abcde(fsh)xyz(foo(bar))lmno)89" , match_default
, make_array ( 8 , 13 , - 2 , 20 , 25 , - 2 , - 2 ));
800 TEST_REGEX_SEARCH ( " \\ ( ( (?>[^()]+) | (?0) )* \\ ) " , perl
| mod_x
, "(ab(xy)cd)" , match_default
, make_array ( 0 , 10 , 7 , 9 , - 2 , - 2 ));
801 TEST_REGEX_SEARCH ( " \\ ( ( ( (?>[^()]+) | (?0) )* ) \\ ) " , perl
| mod_x
, "(ab(xy)cd)" , match_default
, make_array ( 0 , 10 , 1 , 9 , 7 , 9 , - 2 , - 2 ));
802 TEST_REGEX_SEARCH ( " \\ ( (123)? ( ( (?>[^()]+) | (?0) )* ) \\ ) " , perl
| mod_x
, "(ab(xy)cd)" , match_default
, make_array ( 0 , 10 , - 1 , - 1 , 1 , 9 , 7 , 9 , - 2 , - 2 ));
803 TEST_REGEX_SEARCH ( " \\ ( (123)? ( ( (?>[^()]+) | (?0) )* ) \\ ) " , perl
| mod_x
, "(123ab(xy)cd)" , match_default
, make_array ( 0 , 13 , 1 , 4 , 4 , 12 , 10 , 12 , - 2 , - 2 ));
804 TEST_REGEX_SEARCH ( " \\ ( ( (123)? ( (?>[^()]+) | (?0) )* ) \\ ) " , perl
| mod_x
, "(ab(xy)cd)" , match_default
, make_array ( 0 , 10 , 1 , 9 , - 1 , - 1 , 7 , 9 , - 2 , - 2 ));
805 TEST_REGEX_SEARCH ( " \\ ( ( (123)? ( (?>[^()]+) | (?0) )* ) \\ ) " , perl
| mod_x
, "(123ab(xy)cd)" , match_default
, make_array ( 0 , 13 , 1 , 12 , 1 , 4 , 10 , 12 , - 2 , - 2 ));
806 TEST_REGEX_SEARCH ( " \\ ( (((((((((( ( (?>[^()]+) | (?0) )* )))))))))) \\ ) " , perl
| mod_x
, "(ab(xy)cd)" , match_default
, make_array ( 0 , 10 , 1 , 9 , 1 , 9 , 1 , 9 , 1 , 9 , 1 , 9 , 1 , 9 , 1 , 9 , 1 , 9 , 1 , 9 , 1 , 9 , 7 , 9 , - 2 , - 2 ));
807 TEST_REGEX_SEARCH ( " \\ ( ( ( (?>[^()<>]+) | ((?>[^()]+)) | (?0) )* ) \\ ) " , perl
| mod_x
, "(abcd(xyz<p>qrs)123)" , match_default
, make_array ( 0 , 20 , 1 , 19 , 16 , 19 , - 1 , - 1 , - 2 , - 2 ));
808 TEST_REGEX_SEARCH ( " \\ ( ( ( (?>[^()]+) | ((?0)) )* ) \\ ) " , perl
| mod_x
, "(ab(cd)ef)" , match_default
, make_array ( 0 , 10 , 1 , 9 , 7 , 9 , 3 , 7 , - 2 , - 2 ));
809 TEST_REGEX_SEARCH ( " \\ ( ( ( (?>[^()]+) | ((?0)) )* ) \\ ) " , perl
| mod_x
, "(ab(cd(ef)gh)ij)" , match_default
, make_array ( 0 , 16 , 1 , 15 , 13 , 15 , 3 , 13 , - 2 , - 2 ));
811 TEST_REGEX_SEARCH ( " \\ ((?:(?>[^()]+)|(?R))* \\ )" , perl
, "(abcd)" , match_default
, make_array ( 0 , 6 , - 2 , - 2 ));
812 TEST_REGEX_SEARCH ( " \\ ((?:(?>[^()]+)|(?R))* \\ )" , perl
, "(abcd)xyz" , match_default
, make_array ( 0 , 6 , - 2 , - 2 ));
813 TEST_REGEX_SEARCH ( " \\ ((?:(?>[^()]+)|(?R))* \\ )" , perl
, "xyz(abcd)" , match_default
, make_array ( 3 , 9 , - 2 , - 2 ));
814 TEST_REGEX_SEARCH ( " \\ ((?:(?>[^()]+)|(?R))* \\ )" , perl
, "(ab(xy)cd)pqr" , match_default
, make_array ( 0 , 10 , - 2 , - 2 ));
815 TEST_REGEX_SEARCH ( " \\ ((?:(?>[^()]+)|(?R))* \\ )" , perl
, "(ab(xycd)pqr" , match_default
, make_array ( 3 , 9 , - 2 , - 2 ));
816 TEST_REGEX_SEARCH ( " \\ ((?:(?>[^()]+)|(?R))* \\ )" , perl
, "() abc ()" , match_default
, make_array ( 0 , 2 , - 2 , 7 , 9 , - 2 , - 2 ));
817 TEST_REGEX_SEARCH ( " \\ ((?:(?>[^()]+)|(?R))* \\ )" , perl
, "12(abcde(fsh)xyz(foo(bar))lmno)89" , match_default
, make_array ( 2 , 31 , - 2 , - 2 ));
818 TEST_REGEX_SEARCH ( " \\ ((?:(?>[^()]+)|(?R))* \\ )" , perl
, "abcd" , match_default
, make_array (- 2 , - 2 ));
819 TEST_REGEX_SEARCH ( " \\ ((?:(?>[^()]+)|(?R))* \\ )" , perl
, "abcd)" , match_default
, make_array (- 2 , - 2 ));
820 TEST_REGEX_SEARCH ( " \\ ((?:(?>[^()]+)|(?R))* \\ )" , perl
, "(abcd" , match_default
, make_array (- 2 , - 2 ));
822 TEST_REGEX_SEARCH ( " \\ ( ( (?>[^()]+) | (?R) )* \\ ) " , perl
| mod_x
, "(ab(xy)cd)pqr" , match_default
, make_array ( 0 , 10 , 7 , 9 , - 2 , - 2 ));
823 TEST_REGEX_SEARCH ( " \\ ( ( (?>[^()]+) | (?R) )* \\ ) " , perl
| mod_x
, "1(abcd)(x(y)z)pqr" , match_default
, make_array ( 1 , 7 , 2 , 6 , - 2 , 7 , 14 , 12 , 13 , - 2 , - 2 ));
824 TEST_REGEX_SEARCH ( " \\ ( (?: (?>[^()]+) | (?R) ) \\ ) " , perl
| mod_x
, "(abcd)" , match_default
, make_array ( 0 , 6 , - 2 , - 2 ));
825 TEST_REGEX_SEARCH ( " \\ ( (?: (?>[^()]+) | (?R) ) \\ ) " , perl
| mod_x
, "(ab(xy)cd)" , match_default
, make_array ( 3 , 7 , - 2 , - 2 ));
826 TEST_REGEX_SEARCH ( " \\ ( (?: (?>[^()]+) | (?R) ) \\ ) " , perl
| mod_x
, "(a(b(c)d)e)" , match_default
, make_array ( 4 , 7 , - 2 , - 2 ));
827 TEST_REGEX_SEARCH ( " \\ ( (?: (?>[^()]+) | (?R) ) \\ ) " , perl
| mod_x
, "((ab))" , match_default
, make_array ( 0 , 6 , - 2 , - 2 ));
828 TEST_REGEX_SEARCH ( " \\ ( (?: (?>[^()]+) | (?R) ) \\ ) " , perl
| mod_x
, "()" , match_default
, make_array (- 2 , - 2 ));
829 TEST_REGEX_SEARCH ( " \\ ( (?: (?>[^()]+) | (?R) )? \\ ) " , perl
| mod_x
, "()" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
830 TEST_REGEX_SEARCH ( " \\ ( (?: (?>[^()]+) | (?R) )? \\ ) " , perl
| mod_x
, "12(abcde(fsh)xyz(foo(bar))lmno)89" , match_default
, make_array ( 8 , 13 , - 2 , 20 , 25 , - 2 , - 2 ));
831 TEST_REGEX_SEARCH ( " \\ ( ( (?>[^()]+) | (?R) )* \\ ) " , perl
| mod_x
, "(ab(xy)cd)" , match_default
, make_array ( 0 , 10 , 7 , 9 , - 2 , - 2 ));
832 TEST_REGEX_SEARCH ( " \\ ( ( ( (?>[^()]+) | (?R) )* ) \\ ) " , perl
| mod_x
, "(ab(xy)cd)" , match_default
, make_array ( 0 , 10 , 1 , 9 , 7 , 9 , - 2 , - 2 ));
833 TEST_REGEX_SEARCH ( " \\ ( (123)? ( ( (?>[^()]+) | (?R) )* ) \\ ) " , perl
| mod_x
, "(ab(xy)cd)" , match_default
, make_array ( 0 , 10 , - 1 , - 1 , 1 , 9 , 7 , 9 , - 2 , - 2 ));
834 TEST_REGEX_SEARCH ( " \\ ( (123)? ( ( (?>[^()]+) | (?R) )* ) \\ ) " , perl
| mod_x
, "(123ab(xy)cd)" , match_default
, make_array ( 0 , 13 , 1 , 4 , 4 , 12 , 10 , 12 , - 2 , - 2 ));
835 TEST_REGEX_SEARCH ( " \\ ( ( (123)? ( (?>[^()]+) | (?R) )* ) \\ ) " , perl
| mod_x
, "(ab(xy)cd)" , match_default
, make_array ( 0 , 10 , 1 , 9 , - 1 , - 1 , 7 , 9 , - 2 , - 2 ));
836 TEST_REGEX_SEARCH ( " \\ ( ( (123)? ( (?>[^()]+) | (?R) )* ) \\ ) " , perl
| mod_x
, "(123ab(xy)cd)" , match_default
, make_array ( 0 , 13 , 1 , 12 , 1 , 4 , 10 , 12 , - 2 , - 2 ));
837 TEST_REGEX_SEARCH ( " \\ ( (((((((((( ( (?>[^()]+) | (?R) )* )))))))))) \\ ) " , perl
| mod_x
, "(ab(xy)cd)" , match_default
, make_array ( 0 , 10 , 1 , 9 , 1 , 9 , 1 , 9 , 1 , 9 , 1 , 9 , 1 , 9 , 1 , 9 , 1 , 9 , 1 , 9 , 1 , 9 , 7 , 9 , - 2 , - 2 ));
838 TEST_REGEX_SEARCH ( " \\ ( ( ( (?>[^()<>]+) | ((?>[^()]+)) | (?R) )* ) \\ ) " , perl
| mod_x
, "(abcd(xyz<p>qrs)123)" , match_default
, make_array ( 0 , 20 , 1 , 19 , 16 , 19 , - 1 , - 1 , - 2 , - 2 ));
839 TEST_REGEX_SEARCH ( " \\ ( ( ( (?>[^()]+) | ((?R)) )* ) \\ ) " , perl
| mod_x
, "(ab(cd)ef)" , match_default
, make_array ( 0 , 10 , 1 , 9 , 7 , 9 , 3 , 7 , - 2 , - 2 ));
840 TEST_REGEX_SEARCH ( " \\ ( ( ( (?>[^()]+) | ((?R)) )* ) \\ ) " , perl
| mod_x
, "(ab(cd(ef)gh)ij)" , match_default
, make_array ( 0 , 16 , 1 , 15 , 13 , 15 , 3 , 13 , - 2 , - 2 ));
841 // And some extra cases:
842 TEST_REGEX_SEARCH ( "x(ab|(bc|(de|(?R))))" , perl
| mod_x
, "xab" , match_default
, make_array ( 0 , 3 , 1 , 3 , - 1 , - 1 , - 1 , - 1 , - 2 , - 2 ));
843 TEST_REGEX_SEARCH ( "x(ab|(bc|(de|(?R))))" , perl
| mod_x
, "xbc" , match_default
, make_array ( 0 , 3 , 1 , 3 , 1 , 3 , - 1 , - 1 , - 2 , - 2 ));
844 TEST_REGEX_SEARCH ( "x(ab|(bc|(de|(?R))))" , perl
| mod_x
, "xde" , match_default
, make_array ( 0 , 3 , 1 , 3 , 1 , 3 , 1 , 3 , - 2 , - 2 ));
845 TEST_REGEX_SEARCH ( "x(ab|(bc|(de|(?R))))" , perl
| mod_x
, "xxab" , match_default
, make_array ( 0 , 4 , 1 , 4 , 1 , 4 , 1 , 4 , - 2 , - 2 ));
846 TEST_REGEX_SEARCH ( "x(ab|(bc|(de|(?R))))" , perl
| mod_x
, "xxxab" , match_default
, make_array ( 0 , 5 , 1 , 5 , 1 , 5 , 1 , 5 , - 2 , - 2 ));
847 TEST_REGEX_SEARCH ( "x(ab|(bc|(de|(?R))))" , perl
| mod_x
, "xyab" , match_default
, make_array (- 2 , - 2 ));
848 TEST_REGEX_SEARCH ( "[^()]*(?: \\ ((?R) \\ )[^()]*)*" , perl
| mod_x
, "(this(and)that)" , match_default
, make_array ( 0 , 15 , - 2 , 15 , 15 , - 2 , - 2 ));
849 TEST_REGEX_SEARCH ( "[^()]*(?: \\ ((?R) \\ )[^()]*)*" , perl
| mod_x
, "(this(and)that)stuff" , match_default
, make_array ( 0 , 20 , - 2 , 20 , 20 , - 2 , - 2 ));
850 TEST_REGEX_SEARCH ( "[^()]*(?: \\ ((?>(?R)) \\ )[^()]*)*" , perl
| mod_x
, "(this(and)that)" , match_default
, make_array ( 0 , 15 , - 2 , 15 , 15 , - 2 , - 2 ));
852 // More complex cases involving (?(R):
853 TEST_REGEX_SEARCH ( "< (?: (?(R) \\ d++ | [^<>]*+) | (?R)) * >" , perl
| mod_x
, "<>" , match_default
, make_array ( 0 , 2 , - 2 , - 2 ));
854 TEST_REGEX_SEARCH ( "< (?: (?(R) \\ d++ | [^<>]*+) | (?R)) * >" , perl
| mod_x
, "<abcd>" , match_default
, make_array ( 0 , 6 , - 2 , - 2 ));
855 TEST_REGEX_SEARCH ( "< (?: (?(R) \\ d++ | [^<>]*+) | (?R)) * >" , perl
| mod_x
, "<abc <123> hij>" , match_default
, make_array ( 0 , 15 , - 2 , - 2 ));
856 TEST_REGEX_SEARCH ( "< (?: (?(R) \\ d++ | [^<>]*+) | (?R)) * >" , perl
| mod_x
, "<abc <def> hij>" , match_default
, make_array ( 5 , 10 , - 2 , - 2 ));
857 TEST_REGEX_SEARCH ( "< (?: (?(R) \\ d++ | [^<>]*+) | (?R)) * >" , perl
| mod_x
, "<abc<>def>" , match_default
, make_array ( 0 , 10 , - 2 , - 2 ));
858 TEST_REGEX_SEARCH ( "< (?: (?(R) \\ d++ | [^<>]*+) | (?R)) * >" , perl
| mod_x
, "<abc<>" , match_default
, make_array ( 4 , 6 , - 2 , - 2 ));
859 TEST_REGEX_SEARCH ( "< (?: (?(R) \\ d++ | [^<>]*+) | (?R)) * >" , perl
| mod_x
, "<abc" , match_default
, make_array (- 2 , - 2 ));
860 TEST_REGEX_SEARCH ( "((abc (?(R) (?(R1)1) (?(R2)2) X | (?1) (?2) (?R) ))) " , perl
| mod_x
, "abcabc1Xabc2XabcXabcabc" , match_default
, make_array ( 0 , 17 , 0 , 17 , 0 , 17 , - 2 , - 2 ));
862 // Recursion to named sub-expressions:
863 //TEST_REGEX_SEARCH("^\\W*(?:(?<one>(?<two>.)\\W*(?&one)\\W*\\k<two>|)|(?<three>(?<four>.)\\W*(?&three)\\W*\\k'four'|\\W*.\\W*))\\W*$", perl|mod_x|icase, "Satan, oscillate my metallic sonatas!", match_default, make_array(0, 37, -1, -1, -1, -1, 0, 36, 0, 1, -2, -2));
864 TEST_REGEX_SEARCH ( "(?'abc'a|b)(?<doe>d|e)(?&abc){2}" , perl
| mod_x
, "bdaa" , match_default
, make_array ( 0 , 4 , 0 , 1 , 1 , 2 , - 2 , - 2 ));
865 TEST_REGEX_SEARCH ( "(?'abc'a|b)(?<doe>d|e)(?&abc){2}" , perl
| mod_x
, "bdab" , match_default
, make_array ( 0 , 4 , 0 , 1 , 1 , 2 , - 2 , - 2 ));
866 TEST_REGEX_SEARCH ( "(?'abc'a|b)(?<doe>d|e)(?&abc){2}" , perl
| mod_x
, "bddd" , match_default
, make_array (- 2 , - 2 ));
867 TEST_REGEX_SEARCH ( "(?&abc)X(?<abc>P)" , perl
| mod_x
, "abcPXP123" , match_default
, make_array ( 3 , 6 , 5 , 6 , - 2 , - 2 ));
868 TEST_REGEX_SEARCH ( "(?:a(?&abc)b)*(?<abc>x)" , perl
| mod_x
, "123axbaxbaxbx456" , match_default
, make_array ( 3 , 13 , 12 , 13 , - 2 , - 2 ));
869 TEST_REGEX_SEARCH ( "(?:a(?&abc)b){1,5}(?<abc>x)" , perl
| mod_x
, "123axbaxbaxbx456" , match_default
, make_array ( 3 , 13 , 12 , 13 , - 2 , - 2 ));
870 TEST_REGEX_SEARCH ( "(?:a(?&abc)b){2,5}(?<abc>x)" , perl
| mod_x
, "123axbaxbaxbx456" , match_default
, make_array ( 3 , 13 , 12 , 13 , - 2 , - 2 ));
871 TEST_REGEX_SEARCH ( "(?:a(?&abc)b){2,}(?<abc>x)" , perl
| mod_x
, "123axbaxbaxbx456" , match_default
, make_array ( 3 , 13 , 12 , 13 , - 2 , - 2 ));
872 TEST_INVALID_REGEX ( "(?<a>)(?&)" , perl
| mod_x
);
873 TEST_INVALID_REGEX ( "(?<abc>)(?&a)" , perl
| mod_x
);
874 TEST_INVALID_REGEX ( "(?<a>)(?&aaaaaaaaaaaaaaaaaaaaaaa)" , perl
| mod_x
);
875 TEST_INVALID_REGEX ( "(?&N)[]a(?<N>)](?<M>abc)" , perl
| mod_x
);
876 TEST_INVALID_REGEX ( "(?&N)[]a(?<N>)](abc)" , perl
| mod_x
);
877 TEST_INVALID_REGEX ( "(?&N)[]a(?<N>)](abc)" , perl
| mod_x
);
878 TEST_REGEX_SEARCH ( "^X(?&N)(a)(?|(b)|(q))(c)(d)(?<N>Y)" , perl
| mod_x
, "XYabcdY" , match_default
, make_array ( 0 , 7 , 2 , 3 , 3 , 4 , 4 , 5 , 5 , 6 , 6 , 7 , - 2 , - 2 ));
879 // And again with (?P> :
880 //TEST_REGEX_SEARCH("^\\W*(?:(?<one>(?<two>.)\\W*(?&one)\\W*\\k<two>|)|(?<three>(?<four>.)\\W*(?&three)\\W*\\k'four'|\\W*.\\W*))\\W*$", perl|mod_x|icase, "Satan, oscillate my metallic sonatas!", match_default, make_array(0, 37, -1, -1, -1, -1, 0, 36, 0, 1, -2, -2));
881 TEST_REGEX_SEARCH ( "(?'abc'a|b)(?<doe>d|e)(?P>abc){2}" , perl
| mod_x
, "bdaa" , match_default
, make_array ( 0 , 4 , 0 , 1 , 1 , 2 , - 2 , - 2 ));
882 TEST_REGEX_SEARCH ( "(?'abc'a|b)(?<doe>d|e)(?P>abc){2}" , perl
| mod_x
, "bdab" , match_default
, make_array ( 0 , 4 , 0 , 1 , 1 , 2 , - 2 , - 2 ));
883 TEST_REGEX_SEARCH ( "(?'abc'a|b)(?<doe>d|e)(?P>abc){2}" , perl
| mod_x
, "bddd" , match_default
, make_array (- 2 , - 2 ));
884 TEST_REGEX_SEARCH ( "(?P>abc)X(?<abc>P)" , perl
| mod_x
, "abcPXP123" , match_default
, make_array ( 3 , 6 , 5 , 6 , - 2 , - 2 ));
885 TEST_REGEX_SEARCH ( "(?:a(?P>abc)b)*(?<abc>x)" , perl
| mod_x
, "123axbaxbaxbx456" , match_default
, make_array ( 3 , 13 , 12 , 13 , - 2 , - 2 ));
886 TEST_REGEX_SEARCH ( "(?:a(?P>abc)b){1,5}(?<abc>x)" , perl
| mod_x
, "123axbaxbaxbx456" , match_default
, make_array ( 3 , 13 , 12 , 13 , - 2 , - 2 ));
887 TEST_REGEX_SEARCH ( "(?:a(?P>abc)b){2,5}(?<abc>x)" , perl
| mod_x
, "123axbaxbaxbx456" , match_default
, make_array ( 3 , 13 , 12 , 13 , - 2 , - 2 ));
888 TEST_REGEX_SEARCH ( "(?:a(?P>abc)b){2,}(?<abc>x)" , perl
| mod_x
, "123axbaxbaxbx456" , match_default
, make_array ( 3 , 13 , 12 , 13 , - 2 , - 2 ));
889 TEST_INVALID_REGEX ( "(?<a>)(?P>)" , perl
| mod_x
);
890 TEST_INVALID_REGEX ( "(?<abc>)(?P>a)" , perl
| mod_x
);
891 TEST_INVALID_REGEX ( "(?<a>)(?P>aaaaaaaaaaaaaaaaaaaaaaa)" , perl
| mod_x
);
892 TEST_INVALID_REGEX ( "(?P>N)[]a(?<N>)](?<M>abc)" , perl
| mod_x
);
893 TEST_INVALID_REGEX ( "(?P>N)[]a(?<N>)](abc)" , perl
| mod_x
);
894 TEST_INVALID_REGEX ( "(?P>N)[]a(?<N>)](abc)" , perl
| mod_x
);
895 TEST_REGEX_SEARCH ( "^X(?P>N)(a)(?|(b)|(q))(c)(d)(?<N>Y)" , perl
| mod_x
, "XYabcdY" , match_default
, make_array ( 0 , 7 , 2 , 3 , 3 , 4 , 4 , 5 , 5 , 6 , 6 , 7 , - 2 , - 2 ));
896 // Now check (?(R&NAME) :
897 TEST_REGEX_SEARCH ( "(?<A> (?'B' abc (?(R) (?(R&A)1) (?(R&B)2) X | (?1) (?2) (?R) ))) " , perl
| mod_x
, "abcabc1Xabc2XabcXabcabc" , match_default
, make_array ( 0 , 17 , 0 , 17 , 0 , 17 , - 2 , - 2 ));
898 TEST_INVALID_REGEX ( "(?<A> (?'B' abc (?(R) (?(R&1)1) (?(R&B)2) X | (?1) (?2) (?R) ))) " , perl
| mod_x
);
899 TEST_REGEX_SEARCH ( "(?<1> (?'B' abc (?(R) (?(R&1)1) (?(R&B)2) X | (?1) (?2) (?R) ))) " , perl
| mod_x
, "abcabc1Xabc2XabcXabcabc" , match_default
, make_array ( 0 , 17 , 0 , 17 , 0 , 17 , - 2 , - 2 ));
901 // Now check for named conditionals:
902 TEST_REGEX_SEARCH ( "^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)" , perl
| mod_x
, "abd" , match_default
, make_array ( 0 , 3 , 0 , 1 , - 2 , - 2 ));
903 TEST_REGEX_SEARCH ( "^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)" , perl
| mod_x
, "ce" , match_default
, make_array ( 0 , 2 , - 1 , - 1 , - 2 , - 2 ));
905 // Recursions in combination with (DEFINE):
906 TEST_REGEX_SEARCH ( "^(?(DEFINE) (?<A> a) (?<B> b) ) (?&A) (?&B) " , perl
| mod_x
, "abcd" , match_default
, make_array ( 0 , 2 , - 1 , - 1 , - 1 , - 1 , - 2 , - 2 ));
907 TEST_REGEX_SEARCH ( "(?<NAME>(?&NAME_PAT)) \\ s+(?<ADDR>(?&ADDRESS_PAT)) (?(DEFINE) (?<NAME_PAT>[a-z]+) (?<ADDRESS_PAT> \\ d+))" , perl
| mod_x
, "metcalfe 33" , match_default
, make_array ( 0 , 11 , 0 , 8 , 9 , 11 , - 1 , - 1 , - 1 , - 1 , - 2 , - 2 ));
908 TEST_INVALID_REGEX ( "^(?(DEFINE) abc | xyz ) " , perl
| mod_x
);
909 //TEST_INVALID_REGEX("(?(DEFINE) abc){3} xyz", perl|mod_x);
910 TEST_REGEX_SEARCH ( "(?(DEFINE)(?<byte>2[0-4] \\ d|25[0-5]|1 \\ d \\ d|[1-9]? \\ d)) \\ b(?&byte)( \\ .(?&byte)){3}" , perl
| mod_x
, "1.2.3.4" , match_default
, make_array ( 0 , 7 , - 1 , - 1 , 5 , 7 , - 2 , - 2 ));
911 TEST_REGEX_SEARCH ( "(?(DEFINE)(?<byte>2[0-4] \\ d|25[0-5]|1 \\ d \\ d|[1-9]? \\ d)) \\ b(?&byte)( \\ .(?&byte)){3}" , perl
| mod_x
, "131.111.10.206" , match_default
, make_array ( 0 , 14 , - 1 , - 1 , 10 , 14 , - 2 , - 2 ));
912 TEST_REGEX_SEARCH ( "(?(DEFINE)(?<byte>2[0-4] \\ d|25[0-5]|1 \\ d \\ d|[1-9]? \\ d)) \\ b(?&byte)( \\ .(?&byte)){3}" , perl
| mod_x
, "10.0.0.0" , match_default
, make_array ( 0 , 8 , - 1 , - 1 , 6 , 8 , - 2 , - 2 ));
913 TEST_REGEX_SEARCH ( "(?(DEFINE)(?<byte>2[0-4] \\ d|25[0-5]|1 \\ d \\ d|[1-9]? \\ d)) \\ b(?&byte)( \\ .(?&byte)){3}" , perl
| mod_x
, "10.6" , match_default
, make_array (- 2 , - 2 ));
914 TEST_REGEX_SEARCH ( "(?(DEFINE)(?<byte>2[0-4] \\ d|25[0-5]|1 \\ d \\ d|[1-9]? \\ d)) \\ b(?&byte)( \\ .(?&byte)){3}" , perl
| mod_x
, "455.3.4.5" , match_default
, make_array (- 2 , - 2 ));
915 TEST_REGEX_SEARCH ( " \\ b(?&byte)( \\ .(?&byte)){3}(?(DEFINE)(?<byte>2[0-4] \\ d|25[0-5]|1 \\ d \\ d|[1-9]? \\ d))" , perl
| mod_x
, "1.2.3.4" , match_default
, make_array ( 0 , 7 , 5 , 7 , - 1 , - 1 , - 2 , - 2 ));
916 TEST_REGEX_SEARCH ( " \\ b(?&byte)( \\ .(?&byte)){3}(?(DEFINE)(?<byte>2[0-4] \\ d|25[0-5]|1 \\ d \\ d|[1-9]? \\ d))" , perl
| mod_x
, "131.111.10.206" , match_default
, make_array ( 0 , 14 , 10 , 14 , - 1 , - 1 , - 2 , - 2 ));
917 TEST_REGEX_SEARCH ( " \\ b(?&byte)( \\ .(?&byte)){3}(?(DEFINE)(?<byte>2[0-4] \\ d|25[0-5]|1 \\ d \\ d|[1-9]? \\ d))" , perl
| mod_x
, "10.0.0.0" , match_default
, make_array ( 0 , 8 , 6 , 8 , - 1 , - 1 , - 2 , - 2 ));
918 TEST_REGEX_SEARCH ( " \\ b(?&byte)( \\ .(?&byte)){3}(?(DEFINE)(?<byte>2[0-4] \\ d|25[0-5]|1 \\ d \\ d|[1-9]? \\ d))" , perl
| mod_x
, "10.6" , match_default
, make_array (- 2 , - 2 ));
919 TEST_REGEX_SEARCH ( " \\ b(?&byte)( \\ .(?&byte)){3}(?(DEFINE)(?<byte>2[0-4] \\ d|25[0-5]|1 \\ d \\ d|[1-9]? \\ d))" , perl
| mod_x
, "455.3.4.5" , match_default
, make_array (- 2 , - 2 ));
922 TEST_REGEX_SEARCH ( "namespace \\ s+( \\ w+) \\ s+( \\ {(?:[^{}]*(?:(?2)[^{}]*)*)? \\ })" , perl
, "namespace one { namespace two { int foo(); } }" , match_default
, make_array ( 0 , 46 , 10 , 13 , 14 , 46 , - 2 , - 2 ));
923 TEST_REGEX_SEARCH ( "namespace \\ s+( \\ w+) \\ s+( \\ {(?:[^{}]*(?:(?2)[^{}]*)*)? \\ })" , perl
, "namespace one { namespace two { int foo(){} } { {{{ } } } } {}}" , match_default
, make_array ( 0 , 64 , 10 , 13 , 14 , 64 , - 2 , - 2 ));
924 TEST_INVALID_REGEX ( "((?1)|a)" , perl
);
925 TEST_REGEX_SEARCH ( "a(?0)?" , perl
, "aaaaa" , match_default
, make_array ( 0 , 5 , - 2 , - 2 ));
927 // Recursion to a named sub with a name that is used multiple times:
928 TEST_REGEX_SEARCH ( "(?:(?<A>a+)|(?<A>b+)) \\ .(?&A)" , perl
, "aaaa.aa" , match_default
, make_array ( 0 , 7 , 0 , 4 , - 1 , - 1 , - 2 , - 2 ));
929 TEST_REGEX_SEARCH ( "(?:(?<A>a+)|(?<A>b+)) \\ .(?&A)" , perl
, "bbbb.aa" , match_default
, make_array ( 0 , 7 , - 1 , - 1 , 0 , 4 , - 2 , - 2 ));
930 TEST_REGEX_SEARCH ( "(?:(?<A>a+)|(?<A>b+)) \\ .(?&A)" , perl
, "bbbb.bb" , match_default
, make_array (- 2 , - 2 ));
931 // Back reference to a named sub with a name that is used multiple times:
932 TEST_REGEX_SEARCH ( "(?:(?<A>a+)|(?<A>b+)) \\ . \\ k<A>" , perl
, "aaaa.aaaa" , match_default
, make_array ( 0 , 9 , 0 , 4 , - 1 , - 1 , - 2 , - 2 ));
933 TEST_REGEX_SEARCH ( "(?:(?<A>a+)|(?<A>b+)) \\ . \\ k<A>" , perl
, "bbbb.aaaa" , match_default
, make_array (- 2 , - 2 ));
934 TEST_REGEX_SEARCH ( "(?:(?<A>a+)|(?<A>b+)) \\ . \\ k<A>" , perl
, "aaaa.bbbb" , match_default
, make_array (- 2 , - 2 ));
935 TEST_REGEX_SEARCH ( "(?:(?<A>a+)|(?<A>b+)) \\ . \\ k<A>" , perl
, "bbbb.bbbb" , match_default
, make_array ( 0 , 9 , - 1 , - 1 , 0 , 4 , - 2 , - 2 ));
936 TEST_REGEX_SEARCH ( "(?:(?<A>a+)|(?<A>b+)|c+) \\ . \\ k<A>" , perl
, "cccc.cccc" , match_default
, make_array (- 2 , - 2 ));
941 using namespace boost :: regex_constants
;
943 TEST_INVALID_REGEX ( "a+(*" , perl
);
944 TEST_INVALID_REGEX ( "a+(*FX)" , perl
);
945 TEST_REGEX_SEARCH ( "a+(*FAIL)b" , perl
, "aaaab" , match_default
, make_array (- 2 , - 2 ));
946 TEST_REGEX_SEARCH ( "(A(A|B(*ACCEPT)|C)D)(E)" , perl
, "AB" , match_default
, make_array ( 0 , 2 , 0 , 2 , 1 , 2 , - 1 , - 1 , - 2 , - 2 ));
947 TEST_REGEX_SEARCH ( "(A(A|B(*ACCEPT)|C)D)(E)" , perl
, "ACDE" , match_default
, make_array ( 0 , 4 , 0 , 3 , 1 , 2 , 3 , 4 , - 2 , - 2 ));
949 TEST_REGEX_SEARCH ( "^a+(*FAIL)" , perl
, "aaaaaa" , match_default
, make_array (- 2 , - 2 ));
950 TEST_REGEX_SEARCH ( "a+b?c+(*FAIL)" , perl
, "aaabccc" , match_default
, make_array (- 2 , - 2 ));
951 TEST_REGEX_SEARCH ( "a+b?(*COMMIT)c+(*FAIL)" , perl
, "aaabccc" , match_default
, make_array (- 2 , - 2 ));
953 TEST_REGEX_SEARCH ( "(A(A|B(*ACCEPT)|C)D)(E)" , perl
, "AB" , match_default
, make_array ( 0 , 2 , 0 , 2 , 1 , 2 , - 1 , - 1 , - 2 , - 2 ));
954 TEST_REGEX_SEARCH ( "(A(A|B(*ACCEPT)|C)D)(E)" , perl
, "ABX" , match_default
, make_array ( 0 , 2 , 0 , 2 , 1 , 2 , - 1 , - 1 , - 2 , - 2 ));
955 TEST_REGEX_SEARCH ( "(A(A|B(*ACCEPT)|C)D)(E)" , perl
, "AADE" , match_default
, make_array ( 0 , 4 , 0 , 3 , 1 , 2 , 3 , 4 , - 2 , - 2 ));
956 TEST_REGEX_SEARCH ( "(A(A|B(*ACCEPT)|C)D)(E)" , perl
, "ACDE" , match_default
, make_array ( 0 , 4 , 0 , 3 , 1 , 2 , 3 , 4 , - 2 , - 2 ));
957 TEST_REGEX_SEARCH ( "(A(A|B(*ACCEPT)|C)D)(E)" , perl
, "AD" , match_default
, make_array (- 2 , - 2 ));
959 TEST_REGEX_SEARCH ( "(?:(?1)|B)(A(*ACCEPT)XX|C)D" , perl
, "AAD" , match_default
, make_array ( 0 , 2 , 1 , 2 , - 2 , - 2 ));
960 TEST_REGEX_SEARCH ( "(?:(?1)|B)(A(*ACCEPT)XX|C)D" , perl
, "ACD" , match_default
, make_array ( 0 , 3 , 1 , 2 , - 2 , - 2 ));
961 TEST_REGEX_SEARCH ( "(?:(?1)|B)(A(*ACCEPT)XX|C)D" , perl
, "BAD" , match_default
, make_array ( 0 , 2 , 1 , 2 , - 2 , - 2 ));
962 TEST_REGEX_SEARCH ( "(?:(?1)|B)(A(*ACCEPT)XX|C)D" , perl
, "BCD" , match_default
, make_array ( 0 , 3 , 1 , 2 , - 2 , - 2 ));
963 TEST_REGEX_SEARCH ( "(?:(?1)|B)(A(*ACCEPT)XX|C)D" , perl
, "BAX" , match_default
, make_array ( 0 , 2 , 1 , 2 , - 2 , - 2 ));
964 TEST_REGEX_SEARCH ( "(?:(?1)|B)(A(*ACCEPT)XX|C)D" , perl
, "ACX" , match_default
, make_array (- 2 , - 2 ));
965 TEST_REGEX_SEARCH ( "(?:(?1)|B)(A(*ACCEPT)XX|C)D" , perl
, "ABC" , match_default
, make_array (- 2 , - 2 ));
967 TEST_REGEX_SEARCH ( "^(?=a(*ACCEPT)b)" , perl
, "ac" , match_default
, make_array ( 0 , 0 , - 2 , - 2 ));
968 TEST_REGEX_SEARCH ( "A(*COMMIT)(B|D)" , perl
, "ACABX" , match_default
, make_array (- 2 , - 2 ));
970 TEST_REGEX_SEARCH ( "(*COMMIT)(A|P)(B|P)(C|P)" , perl
, "ABCDEFG" , match_default
, make_array ( 0 , 3 , 0 , 1 , 1 , 2 , 2 , 3 , - 2 , - 2 ));
971 TEST_REGEX_SEARCH ( "(*COMMIT)(A|P)(B|P)(C|P)" , perl
, "DEFGABC" , match_default
, make_array (- 2 , - 2 ));
973 TEST_REGEX_SEARCH ( "( \\ w+)(?>b(*COMMIT)) \\ w{2}" , perl
, "abbb" , match_default
, make_array ( 0 , 4 , 0 , 1 , - 2 , - 2 ));
974 TEST_REGEX_SEARCH ( "( \\ w+)b(*COMMIT) \\ w{2}" , perl
, "abbb" , match_default
, make_array (- 2 , - 2 ));
976 TEST_REGEX_SEARCH ( "a+b?(*PRUNE)c+(*FAIL)" , perl
, "aaabccc" , match_default
, make_array (- 2 , - 2 ));
977 TEST_REGEX_SEARCH ( "a+b?(*SKIP)c+(*FAIL)" , perl
, "aaabcccaaabccc" , match_default
, make_array (- 2 , - 2 ));
979 TEST_REGEX_SEARCH ( "^(?=a(*SKIP)b|ac)" , perl
, "ac" , match_default
, make_array (- 2 , - 2 ));
980 TEST_REGEX_SEARCH ( "^(?=a(*PRUNE)b)" , perl
, "ab" , match_default
, make_array ( 0 , 0 , - 2 , - 2 ));
981 TEST_REGEX_SEARCH ( "^(?=a(*PRUNE)b)" , perl
, "ac" , match_default
, make_array (- 2 , - 2 ));
982 TEST_REGEX_SEARCH ( "AA+(*PRUNE)(B|Z)|AC" , perl
, "AAAC" , match_default
, make_array ( 2 , 4 , - 1 , - 1 , - 2 , - 2 ));
983 TEST_REGEX_SEARCH ( "AA+(*SKIP)(B|Z)|AC" , perl
, "AAAC" , match_default
, make_array (- 2 , - 2 ));
984 TEST_REGEX_SEARCH ( "AA+(*SKIP)(B|Z)|C" , perl
, "AAAC" , match_default
, make_array ( 3 , 4 , - 1 , - 1 , - 2 , - 2 ));
985 TEST_REGEX_SEARCH ( "AA+(*SKIP)(B|Z)|AC" , perl
, "AAAC" , match_default
, make_array (- 2 , - 2 ));
986 TEST_REGEX_SEARCH ( "AA+(*SKIP)B|C" , perl
, "AAAC" , match_default
, make_array ( 3 , 4 , - 2 , - 2 ));
988 TEST_REGEX_SEARCH ( "^(?:aaa(*THEN) \\ w{6}|bbb(*THEN) \\ w{5}|ccc(*THEN) \\ w{4}| \\ w{3})" , perl
, "aaaxxxxxx" , match_default
, make_array ( 0 , 9 , - 2 , - 2 ));
989 TEST_REGEX_SEARCH ( "^(?:aaa(*THEN) \\ w{6}|bbb(*THEN) \\ w{5}|ccc(*THEN) \\ w{4}| \\ w{3})" , perl
, "aaa++++++" , match_default
, make_array (- 2 , - 2 ));
990 TEST_REGEX_SEARCH ( "^(?:aaa(*THEN) \\ w{6}|bbb(*THEN) \\ w{5}|ccc(*THEN) \\ w{4}| \\ w{3})" , perl
, "bbbxxxxx" , match_default
, make_array ( 0 , 8 , - 2 , - 2 ));
991 TEST_REGEX_SEARCH ( "^(?:aaa(*THEN) \\ w{6}|bbb(*THEN) \\ w{5}|ccc(*THEN) \\ w{4}| \\ w{3})" , perl
, "bbb+++++" , match_default
, make_array (- 2 , - 2 ));
992 TEST_REGEX_SEARCH ( "^(?:aaa(*THEN) \\ w{6}|bbb(*THEN) \\ w{5}|ccc(*THEN) \\ w{4}| \\ w{3})" , perl
, "cccxxxx" , match_default
, make_array ( 0 , 7 , - 2 , - 2 ));
993 TEST_REGEX_SEARCH ( "^(?:aaa(*THEN) \\ w{6}|bbb(*THEN) \\ w{5}|ccc(*THEN) \\ w{4}| \\ w{3})" , perl
, "ccc++++" , match_default
, make_array (- 2 , - 2 ));
994 TEST_REGEX_SEARCH ( "^(?:aaa(*THEN) \\ w{6}|bbb(*THEN) \\ w{5}|ccc(*THEN) \\ w{4}| \\ w{3})" , perl
, "dddddddd" , match_default
, make_array ( 0 , 3 , - 2 , - 2 ));
996 TEST_REGEX_SEARCH ( "^(aaa(*THEN) \\ w{6}|bbb(*THEN) \\ w{5}|ccc(*THEN) \\ w{4}| \\ w{3})" , perl
, "aaaxxxxxx" , match_default
, make_array ( 0 , 9 , 0 , 9 , - 2 , - 2 ));
997 TEST_REGEX_SEARCH ( "^(aaa(*THEN) \\ w{6}|bbb(*THEN) \\ w{5}|ccc(*THEN) \\ w{4}| \\ w{3})" , perl
, "aaa++++++" , match_default
, make_array (- 2 , - 2 ));
998 TEST_REGEX_SEARCH ( "^(aaa(*THEN) \\ w{6}|bbb(*THEN) \\ w{5}|ccc(*THEN) \\ w{4}| \\ w{3})" , perl
, "bbbxxxxx" , match_default
, make_array ( 0 , 8 , 0 , 8 , - 2 , - 2 ));
999 TEST_REGEX_SEARCH ( "^(aaa(*THEN) \\ w{6}|bbb(*THEN) \\ w{5}|ccc(*THEN) \\ w{4}| \\ w{3})" , perl
, "bbb+++++" , match_default
, make_array (- 2 , - 2 ));
1000 TEST_REGEX_SEARCH ( "^(aaa(*THEN) \\ w{6}|bbb(*THEN) \\ w{5}|ccc(*THEN) \\ w{4}| \\ w{3})" , perl
, "cccxxxx" , match_default
, make_array ( 0 , 7 , 0 , 7 , - 2 , - 2 ));
1001 TEST_REGEX_SEARCH ( "^(aaa(*THEN) \\ w{6}|bbb(*THEN) \\ w{5}|ccc(*THEN) \\ w{4}| \\ w{3})" , perl
, "ccc++++" , match_default
, make_array (- 2 , - 2 ));
1002 TEST_REGEX_SEARCH ( "^(aaa(*THEN) \\ w{6}|bbb(*THEN) \\ w{5}|ccc(*THEN) \\ w{4}| \\ w{3})" , perl
, "dddddddd" , match_default
, make_array ( 0 , 3 , 0 , 3 , - 2 , - 2 ));
1004 TEST_REGEX_SEARCH ( "(?:a+(*THEN) \\ w{6}|x \\ w{3})" , perl
, "aaaxxxxx" , match_default
, make_array ( 3 , 7 , - 2 , - 2 ));
1005 TEST_REGEX_SEARCH ( "(?>(*COMMIT)(?>yes|no)(*THEN)(*F))?" , perl
, "yes" , match_default
, make_array (- 2 , - 2 ));
1006 TEST_REGEX_SEARCH ( "(?>(*COMMIT)(yes|no)(*THEN)(*F))?" , perl
, "yes" , match_default
, make_array (- 2 , - 2 ));