xref: /PHP-7.1/ext/pcre/pcrelib/testdata/testinput14 (revision ca02d9c2)
1/-- This set of tests is run only with the 8-bit library. They do not require
2    UTF-8 or Unicode property support. The file starts with all the tests of
3    the POSIX interface, because that is supported only with the 8-bit library.
4    --/
5
6< forbid 8W
7
8/abc/P
9    abc
10    *** Failers
11
12/^abc|def/P
13    abcdef
14    abcdef\B
15
16/.*((abc)$|(def))/P
17    defabc
18    \Zdefabc
19
20/the quick brown fox/P
21    the quick brown fox
22    *** Failers
23    The Quick Brown Fox
24
25/the quick brown fox/Pi
26    the quick brown fox
27    The Quick Brown Fox
28
29/abc.def/P
30    *** Failers
31    abc\ndef
32
33/abc$/P
34    abc
35    abc\n
36
37/(abc)\2/P
38
39/(abc\1)/P
40    abc
41
42/a*(b+)(z)(z)/P
43    aaaabbbbzzzz
44    aaaabbbbzzzz\O0
45    aaaabbbbzzzz\O1
46    aaaabbbbzzzz\O2
47    aaaabbbbzzzz\O3
48    aaaabbbbzzzz\O4
49    aaaabbbbzzzz\O5
50
51/ab.cd/P
52    ab-cd
53    ab=cd
54    ** Failers
55    ab\ncd
56
57/ab.cd/Ps
58    ab-cd
59    ab=cd
60    ab\ncd
61
62/a(b)c/PN
63    abc
64
65/a(?P<name>b)c/PN
66    abc
67
68/a?|b?/P
69    abc
70    ** Failers
71    ddd\N
72
73/\w+A/P
74   CDAAAAB
75
76/\w+A/PU
77   CDAAAAB
78
79/\Biss\B/I+P
80    Mississippi
81
82/abc/\P
83
84/-- End of POSIX tests --/
85
86/a\Cb/
87    aXb
88    a\nb
89    ** Failers (too big char)
90    A\x{123}B
91    A\o{443}B
92
93/\x{100}/I
94
95/\o{400}/I
96
97/  (?: [\040\t] |  \(
98(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
99\)  )*                          # optional leading comment
100(?:    (?:
101[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
102(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
103|
104" (?:                      # opening quote...
105[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
106|                     #    or
107\\ [^\x80-\xff]           #   Escaped something (something != CR)
108)* "  # closing quote
109)                    # initial word
110(?:  (?: [\040\t] |  \(
111(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
112\)  )*  \.  (?: [\040\t] |  \(
113(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
114\)  )*   (?:
115[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
116(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
117|
118" (?:                      # opening quote...
119[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
120|                     #    or
121\\ [^\x80-\xff]           #   Escaped something (something != CR)
122)* "  # closing quote
123)  )* # further okay, if led by a period
124(?: [\040\t] |  \(
125(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
126\)  )*  @  (?: [\040\t] |  \(
127(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
128\)  )*    (?:
129[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
130(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
131|   \[                         # [
132(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
133\]                        #           ]
134)                           # initial subdomain
135(?:                                  #
136(?: [\040\t] |  \(
137(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
138\)  )*  \.                        # if led by a period...
139(?: [\040\t] |  \(
140(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
141\)  )*   (?:
142[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
143(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
144|   \[                         # [
145(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
146\]                        #           ]
147)                     #   ...further okay
148)*
149# address
150|                     #  or
151(?:
152[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
153(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
154|
155" (?:                      # opening quote...
156[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
157|                     #    or
158\\ [^\x80-\xff]           #   Escaped something (something != CR)
159)* "  # closing quote
160)             # one word, optionally followed by....
161(?:
162[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]  |  # atom and space parts, or...
163\(
164(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
165\)       |  # comments, or...
166
167" (?:                      # opening quote...
168[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
169|                     #    or
170\\ [^\x80-\xff]           #   Escaped something (something != CR)
171)* "  # closing quote
172# quoted strings
173)*
174<  (?: [\040\t] |  \(
175(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
176\)  )*                     # leading <
177(?:  @  (?: [\040\t] |  \(
178(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
179\)  )*    (?:
180[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
181(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
182|   \[                         # [
183(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
184\]                        #           ]
185)                           # initial subdomain
186(?:                                  #
187(?: [\040\t] |  \(
188(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
189\)  )*  \.                        # if led by a period...
190(?: [\040\t] |  \(
191(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
192\)  )*   (?:
193[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
194(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
195|   \[                         # [
196(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
197\]                        #           ]
198)                     #   ...further okay
199)*
200
201(?:  (?: [\040\t] |  \(
202(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
203\)  )*  ,  (?: [\040\t] |  \(
204(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
205\)  )*  @  (?: [\040\t] |  \(
206(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
207\)  )*    (?:
208[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
209(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
210|   \[                         # [
211(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
212\]                        #           ]
213)                           # initial subdomain
214(?:                                  #
215(?: [\040\t] |  \(
216(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
217\)  )*  \.                        # if led by a period...
218(?: [\040\t] |  \(
219(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
220\)  )*   (?:
221[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
222(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
223|   \[                         # [
224(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
225\]                        #           ]
226)                     #   ...further okay
227)*
228)* # further okay, if led by comma
229:                                # closing colon
230(?: [\040\t] |  \(
231(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
232\)  )*  )? #       optional route
233(?:
234[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
235(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
236|
237" (?:                      # opening quote...
238[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
239|                     #    or
240\\ [^\x80-\xff]           #   Escaped something (something != CR)
241)* "  # closing quote
242)                    # initial word
243(?:  (?: [\040\t] |  \(
244(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
245\)  )*  \.  (?: [\040\t] |  \(
246(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
247\)  )*   (?:
248[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
249(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
250|
251" (?:                      # opening quote...
252[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
253|                     #    or
254\\ [^\x80-\xff]           #   Escaped something (something != CR)
255)* "  # closing quote
256)  )* # further okay, if led by a period
257(?: [\040\t] |  \(
258(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
259\)  )*  @  (?: [\040\t] |  \(
260(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
261\)  )*    (?:
262[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
263(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
264|   \[                         # [
265(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
266\]                        #           ]
267)                           # initial subdomain
268(?:                                  #
269(?: [\040\t] |  \(
270(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
271\)  )*  \.                        # if led by a period...
272(?: [\040\t] |  \(
273(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
274\)  )*   (?:
275[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
276(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
277|   \[                         # [
278(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
279\]                        #           ]
280)                     #   ...further okay
281)*
282#       address spec
283(?: [\040\t] |  \(
284(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
285\)  )*  > #                  trailing >
286# name and address
287)  (?: [\040\t] |  \(
288(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
289\)  )*                       # optional trailing comment
290/xSI
291
292/-- Although this saved pattern was compiled with link-size=2, it does no harm
293to run this test with other link sizes because it is going to generated a
294"compiled in wrong mode" error as soon as it is loaded, so the link size does
295not matter. --/
296
297<!testsaved16
298
299<!testsaved32
300
301/\h/SI
302
303/\H/SI
304
305/\v/SI
306
307/\V/SI
308
309/\R/SI
310
311/[\h]/BZ
312    >\x09<
313
314/[\h]+/BZ
315    >\x09\x20\xa0<
316
317/[\v]/BZ
318
319/[\H]/BZ
320
321/[^\h]/BZ
322
323/[\V]/BZ
324
325/[\x0a\V]/BZ
326
327/\777/I
328
329/(*:0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF)XX/K
330    XX
331
332/(*:0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDE)XX/K
333    XX
334
335/\u0100/<JS>
336
337/[\u0100-\u0200]/<JS>
338
339/[^\x00-a]{12,}[^b-\xff]*/BZ
340
341/[^\s]*\s* [^\W]+\W+ [^\d]*?\d0 [^\d\w]{4,6}?\w*A/BZ
342
343/(?'ABC'[bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar]([bar](*THEN:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/
344
345/-- End of testinput14 --/
346