@@ -189,3 +189,108 @@ check 'End of line' \
189
189
' testing tests' \
190
190
' s/s$/x/g' \
191
191
' testing testx'
192
+
193
+ # Captures and groups
194
+
195
+ checkb ' Capturing group' \
196
+ ' Name is Remi!' \
197
+ ' s/^.*is \(.*\)!$/\1/' \
198
+ ' Remi'
199
+ checke ' Capturing group' \
200
+ ' Name is Remi!' \
201
+ ' s/^.*is (.*)!$/\1/' \
202
+ ' Remi'
203
+
204
+ checkb ' Non-capturing parentheses' \
205
+ ' Some (dumb)text' \
206
+ ' s/(.*)//g' \
207
+ ' Some text'
208
+ checke ' Non-capturing parentheses' \
209
+ ' Some (dumb)text' \
210
+ ' s/\(.*\)//g' \
211
+ ' Some text'
212
+
213
+ checkb ' Backreference' \
214
+ ' ab be cd cc df' \
215
+ ' s/\([a-z]\)\1/xx/g' \
216
+ ' ab be cd xx df'
217
+ checke ' Backreference' \
218
+ ' ab be cd cc df' \
219
+ ' s/([a-z])\1/xx/g' \
220
+ ' ab be cd xx df'
221
+
222
+ # Look-around not supported in POSIX
223
+
224
+ # Multiplicity
225
+
226
+ checkb ' 0 or 1' \
227
+ ' bb bab baab baa?b baaab' \
228
+ ' s/baa\?b/x/g' \
229
+ ' bb x x baa?b baaab'
230
+ checke ' 0 or 1' \
231
+ ' bb bab baab baa?b baaab' \
232
+ ' s/baa?b/x/g' \
233
+ ' bb x x baa?b baaab'
234
+
235
+ checkb ' 0 or 1 (negative)' \
236
+ ' bb bab baab baa?b baaab' \
237
+ ' s/baa?b/x/g' \
238
+ ' bb bab baab x baaab'
239
+ checke ' 0 or 1 (negative)' \
240
+ ' bb bab baab baa?b baaab' \
241
+ ' s/baa\?b/x/g' \
242
+ ' bb bab baab x baaab'
243
+
244
+ checkb ' 1 or more' \
245
+ ' bb bab baab ba+b baaab' \
246
+ ' s/ba\+b/x/g' \
247
+ ' bb x x ba+b x'
248
+ checke ' 1 or more' \
249
+ ' bb bab baab ba+b baaab' \
250
+ ' s/ba+b/x/g' \
251
+ ' bb x x ba+b x'
252
+
253
+ checkb ' 1 or more (negative)' \
254
+ ' bb bab baab ba+b baaab' \
255
+ ' s/ba+b/x/g' \
256
+ ' bb bab baab x baaab'
257
+ checke ' 1 or more (negative)' \
258
+ ' bb bab baab ba+b baaab' \
259
+ ' s/ba\+b/x/g' \
260
+ ' bb bab baab x baaab'
261
+
262
+ checkb ' Specific number (1)' \
263
+ ' bb bab baab baaab baaaab' \
264
+ ' s/ba\{2\}b/x/g' \
265
+ ' bb bab x baaab baaaab'
266
+ checke ' Specific number (1)' \
267
+ ' bb bab baab baaab baaaab' \
268
+ ' s/ba{2}b/x/g' \
269
+ ' bb bab x baaab baaaab'
270
+
271
+ checkb ' Specific number (closed)' \
272
+ ' bb bab baab baaab baaaab' \
273
+ ' s/ba\{1,3\}b/x/g' \
274
+ ' bb x x x baaaab'
275
+ checke ' Specific number (closed)' \
276
+ ' bb bab baab baaab baaaab' \
277
+ ' s/ba{1,3}b/x/g' \
278
+ ' bb x x x baaaab'
279
+
280
+ checkb ' Specific number (open left)' \
281
+ ' bb bab baaab baaaab' \
282
+ ' s/ba\{,3\}b/x/g' \
283
+ ' x x x baaaab'
284
+ checke ' Specific number (open left)' \
285
+ ' bb bab baaab baaaab' \
286
+ ' s/ba{,3}b/x/g' \
287
+ ' x x x baaaab'
288
+
289
+ checkb ' Specific number (open right)' \
290
+ ' bb bab baaab baaaab' \
291
+ ' s/ba\{2,\}b/x/g' \
292
+ ' bb bab x x'
293
+ checke ' Specific number (open right)' \
294
+ ' bb bab baaab baaaab' \
295
+ ' s/ba{2,}b/x/g' \
296
+ ' bb bab x x'
0 commit comments