15dfecf96Smrg#
25dfecf96Smrg#  Copyright (c) 2002 by The XFree86 Project, Inc.
35dfecf96Smrg#
45dfecf96Smrg#  Permission is hereby granted, free of charge, to any person obtaining a
55dfecf96Smrg#  copy of this software and associated documentation files (the "Software"),
65dfecf96Smrg#  to deal in the Software without restriction, including without limitation
75dfecf96Smrg#  the rights to use, copy, modify, merge, publish, distribute, sublicense,
85dfecf96Smrg#  and/or sell copies of the Software, and to permit persons to whom the
95dfecf96Smrg#  Software is furnished to do so, subject to the following conditions:
105dfecf96Smrg#
115dfecf96Smrg#  The above copyright notice and this permission notice shall be included in
125dfecf96Smrg#  all copies or substantial portions of the Software.
135dfecf96Smrg#
145dfecf96Smrg#  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
155dfecf96Smrg#  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
165dfecf96Smrg#  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
175dfecf96Smrg#  THE XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
185dfecf96Smrg#  WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
195dfecf96Smrg#  OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
205dfecf96Smrg#  SOFTWARE.
215dfecf96Smrg#
225dfecf96Smrg#  Except as contained in this notice, the name of the XFree86 Project shall
235dfecf96Smrg#  not be used in advertising or otherwise to promote the sale, use or other
245dfecf96Smrg#  dealings in this Software without prior written authorization from the
255dfecf96Smrg#  XFree86 Project.
265dfecf96Smrg#
275dfecf96Smrg#  Author: Paulo César Pereira de Andrade
285dfecf96Smrg#
295dfecf96Smrg#
305dfecf96Smrg# $XFree86: xc/programs/xedit/lisp/re/tests.txt,v 1.1 2002/09/08 02:29:50 paulo Exp $
315dfecf96Smrg
325dfecf96Smrg# Some tests for the library:
335dfecf96Smrg#	lines starting with # are comments
345dfecf96Smrg#	lines starting with / are a regular expression pattern
355dfecf96Smrg#		The pattern must end with / and may be followed by:
365dfecf96Smrg#			i -> ignore case
375dfecf96Smrg#			n -> create newline sensitive regex
385dfecf96Smrg#	lines starting with > are a string input to the last pattern
395dfecf96Smrg#		To test newline sensitive matching, add \n to the string.
405dfecf96Smrg#	lines starting with a number are the expected result
415dfecf96Smrg#		If more than one line, every subsequent line is the
425dfecf96Smrg#		value of an "subresult".
435dfecf96Smrg#	:NOMATCH means that the string input should not match
445dfecf96Smrg
455dfecf96Smrg# Simple string
465dfecf96Smrg/abc/
475dfecf96Smrg>abc
485dfecf96Smrg0,3: abc
495dfecf96Smrg>aaaaaaaaaaaaaaabc
505dfecf96Smrg14,17: abc
515dfecf96Smrg>xxxxxxxxxxxxxxaaaaaaaaaaaaaaaaabcxx
525dfecf96Smrg30,33: abc
535dfecf96Smrg
545dfecf96Smrg# String list
555dfecf96Smrg/abc|bcd|cde/
565dfecf96Smrg>abc
575dfecf96Smrg0,3: abc
585dfecf96Smrg>aabc
595dfecf96Smrg1,4: abc
605dfecf96Smrg>xxxbcdef
615dfecf96Smrg3,6: bcd
625dfecf96Smrg>abdzzzcdabcde
635dfecf96Smrg8,11: abc
645dfecf96Smrg>xxxxabdecdabdcde
655dfecf96Smrg13,16: cde
665dfecf96Smrg
675dfecf96Smrg# Complex string
685dfecf96Smrg/a?bc|ab?c|abc?/
695dfecf96Smrg>abc
705dfecf96Smrg0,3: abc
715dfecf96Smrg>xxxb
725dfecf96Smrg:NOMATCH
735dfecf96Smrg>xxxbc
745dfecf96Smrg3,5: bc
755dfecf96Smrg>sssssab
765dfecf96Smrg5,7: ab
775dfecf96Smrg
785dfecf96Smrg# Another complex string
795dfecf96Smrg/a*bc|ab*c|abc*/
805dfecf96Smrg>aaaaaaabc
815dfecf96Smrg0,9: aaaaaaabc
825dfecf96Smrg>xaaaaaaabc
835dfecf96Smrg1,10: aaaaaaabc
845dfecf96Smrg>xyzaaaaaaabc
855dfecf96Smrg3,12: aaaaaaabc
865dfecf96Smrg>abbc
875dfecf96Smrg0,4: abbc
885dfecf96Smrg>xxabbbbbc
895dfecf96Smrg2,9: abbbbbc
905dfecf96Smrg>abcccccccccc
915dfecf96Smrg0,12: abcccccccccc
925dfecf96Smrg>abccccccccccd
935dfecf96Smrg0,12: abcccccccccc
945dfecf96Smrg>xxxxxxxaaaaaaaaaabbbbbbbbbbbccccccccccc
955dfecf96Smrg16,29: abbbbbbbbbbbc
965dfecf96Smrg>xxxbbbbbbbbbc
975dfecf96Smrg11,13: bc
985dfecf96Smrg
995dfecf96Smrg# Another complex string
1005dfecf96Smrg/a+bc|ab+c|abc+/
1015dfecf96Smrg>xxxbc
1025dfecf96Smrg:NOMATCH
1035dfecf96Smrg>xaaabc
1045dfecf96Smrg1,6: aaabc
1055dfecf96Smrg>zzzzaaaaabbc
1065dfecf96Smrg8,12: abbc
1075dfecf96Smrg>zzzzaaaabbbbbbcccc
1085dfecf96Smrg7,15: abbbbbbc
1095dfecf96Smrg
1105dfecf96Smrg# Simple pattern
1115dfecf96Smrg/a.c/
1125dfecf96Smrg>abc
1135dfecf96Smrg0,3: abc
1145dfecf96Smrg>aaac
1155dfecf96Smrg1,4: aac
1165dfecf96Smrg>xac
1175dfecf96Smrg:NOMATCH
1185dfecf96Smrg>xaac
1195dfecf96Smrg1,4: aac
1205dfecf96Smrg>xxabc
1215dfecf96Smrg2,5: abc
1225dfecf96Smrg>xxxaxc
1235dfecf96Smrg3,6: axc
1245dfecf96Smrg
1255dfecf96Smrg# Another simple pattern
1265dfecf96Smrg/a*c/
1275dfecf96Smrg>c
1285dfecf96Smrg0,1: c
1295dfecf96Smrg>xxxxxxxxc
1305dfecf96Smrg8,9: c
1315dfecf96Smrg>xxxxxxxcc
1325dfecf96Smrg7,8: c
1335dfecf96Smrg>ac
1345dfecf96Smrg0,2: ac
1355dfecf96Smrg>aaaac
1365dfecf96Smrg0,5: aaaac
1375dfecf96Smrg>xac
1385dfecf96Smrg1,3: ac
1395dfecf96Smrg>xxxaac
1405dfecf96Smrg3,6: aac
1415dfecf96Smrg>xxac
1425dfecf96Smrg2,4: ac
1435dfecf96Smrg>xxxxac
1445dfecf96Smrg4,6: ac
1455dfecf96Smrg
1465dfecf96Smrg# Another simple pattern
1475dfecf96Smrg/a+c/
1485dfecf96Smrg>xxaac
1495dfecf96Smrg2,5: aac
1505dfecf96Smrg>xxxaaaac
1515dfecf96Smrg3,8: aaaac
1525dfecf96Smrg>xaaaabac
1535dfecf96Smrg6,8: ac
1545dfecf96Smrg>xxxc
1555dfecf96Smrg:NOMATCH
1565dfecf96Smrg>xxxxaaaaccc
1575dfecf96Smrg4,9: aaaac
1585dfecf96Smrg
1595dfecf96Smrg# Another simple pattern
1605dfecf96Smrg/a{4}b/
1615dfecf96Smrg>xabxxaabxxxaaabxxxxaaaab
1625dfecf96Smrg19,24: aaaab
1635dfecf96Smrg>aaabaaaab
1645dfecf96Smrg4,9: aaaab
1655dfecf96Smrg
1665dfecf96Smrg# Another simple pattern
1675dfecf96Smrg/a{4,}b/
1685dfecf96Smrg>xxxaaaab
1695dfecf96Smrg3,8: aaaab
1705dfecf96Smrg>zaaabzzzaaaaaaaaaaaaaaaab
1715dfecf96Smrg8,25: aaaaaaaaaaaaaaaab
1725dfecf96Smrg
1735dfecf96Smrg# Another simple pattern
1745dfecf96Smrg/a{,4}b/
1755dfecf96Smrg>b
1765dfecf96Smrg0,1: b
1775dfecf96Smrg>xxxxxxxxb
1785dfecf96Smrg8,9: b
1795dfecf96Smrg>xaaaaaaaaab
1805dfecf96Smrg6,11: aaaab
1815dfecf96Smrg>xxxab
1825dfecf96Smrg3,5: ab
1835dfecf96Smrg>aaaaaxaaab
1845dfecf96Smrg6,10: aaab
1855dfecf96Smrg
1865dfecf96Smrg# Another simple pattern
1875dfecf96Smrg/a{2,4}b/
1885dfecf96Smrg>xab
1895dfecf96Smrg:NOMATCH
1905dfecf96Smrg>xaab
1915dfecf96Smrg1,4: aab
1925dfecf96Smrg>xaaab
1935dfecf96Smrg1,5: aaab
1945dfecf96Smrg>xxaaaab
1955dfecf96Smrg2,7: aaaab
1965dfecf96Smrg>xxxaaaaab
1975dfecf96Smrg4,9: aaaab
1985dfecf96Smrg
1995dfecf96Smrg# Some simple grouping tests
2005dfecf96Smrg/foo(bar|baz)fee/
2015dfecf96Smrg>feebarbazfoobarfee
2025dfecf96Smrg9,18: foobarfee
2035dfecf96Smrg12,15: bar
2045dfecf96Smrg>foofooobazfeefoobazfee
2055dfecf96Smrg13,22: foobazfee
2065dfecf96Smrg/f(oo|ee)ba[rz]/
2075dfecf96Smrg>barfoebaz
2085dfecf96Smrg:NOMATCH
2095dfecf96Smrg>bazfoobar
2105dfecf96Smrg3,9: foobar
2115dfecf96Smrg4,6: oo
2125dfecf96Smrg>barfeebaz
2135dfecf96Smrg3,9: feebaz
2145dfecf96Smrg4,6: ee
2155dfecf96Smrg/\<(int|char)\>/
2165dfecf96Smrg>aint character int foo
2175dfecf96Smrg15,18: int
2185dfecf96Smrg15,18: int
2195dfecf96Smrg
2205dfecf96Smrg# Some complex repetitions
2215dfecf96Smrg/foo.*bar/
2225dfecf96Smrg>barfoblaboofoobarfoobarfoobar
2235dfecf96Smrg11,17: foobar
2245dfecf96Smrg/foo.+bar/
2255dfecf96Smrg>foobar
2265dfecf96Smrg:NOMATCH
2275dfecf96Smrg>fobbarfooxbarfooybar
2285dfecf96Smrg6,13: fooxbar
2295dfecf96Smrg/foo.?bar/
2305dfecf96Smrg>xfoobar
2315dfecf96Smrg1,7: foobar
2325dfecf96Smrg>xxfooxxbar
2335dfecf96Smrg:NOMATCH
2345dfecf96Smrg>yyyfootbar
2355dfecf96Smrg3,10: footbar
2365dfecf96Smrg
2375dfecf96Smrg# Some nested complex repetitions
2385dfecf96Smrg/a.*b.*c/
2395dfecf96Smrg>abc
2405dfecf96Smrg0,3: abc
2415dfecf96Smrg>xxxxxxxxxabbbbbbbccaaaaabbbc
2425dfecf96Smrg9,18: abbbbbbbc
2435dfecf96Smrg/a.+b.*c/
2445dfecf96Smrg>xxxabc 
2455dfecf96Smrg:NOMATCH
2465dfecf96Smrg>xxaxbbc
2475dfecf96Smrg2,7: axbbc
2485dfecf96Smrg/a.+b.?c/
2495dfecf96Smrg>xaabc
2505dfecf96Smrg1,5: aabc
2515dfecf96Smrg>xxaabbc
2525dfecf96Smrg2,7: aabbc
2535dfecf96Smrg
2545dfecf96Smrg# Very complex repetitions
2555dfecf96Smrg/(foo.*|bar)fee/
2565dfecf96Smrg# XXX NOTE
2575dfecf96Smrg# This pattern does not return the correct offset for the group.
2585dfecf96Smrg# Support for this may and may not be added.
2595dfecf96Smrg
2605dfecf96Smrg>barfoofee
2615dfecf96Smrg3,9: foofee
2625dfecf96Smrg>foobarfee
2635dfecf96Smrg0,9: foobarfee
2645dfecf96Smrg>xxfobarfee
2655dfecf96Smrg4,10: barfee
2665dfecf96Smrg>barfooooooobarfee
2675dfecf96Smrg3,17: fooooooobarfee
2685dfecf96Smrg>xxfobarfeefoobar
2695dfecf96Smrg4,10: barfee
2705dfecf96Smrg/(foo.+|bar)fee/
2715dfecf96Smrg>barfoofee
2725dfecf96Smrg:NOMATCH
2735dfecf96Smrg>barfooxfee
2745dfecf96Smrg3,10: fooxfee
2755dfecf96Smrg/(foo.?|bar)fee/
2765dfecf96Smrg>foobar
2775dfecf96Smrg:NOMATCH
2785dfecf96Smrg>bafoofee
2795dfecf96Smrg2,8:foofee
2805dfecf96Smrg>bafooofeebarfee
2815dfecf96Smrg2,9: fooofee
2825dfecf96Smrg>bafoofeebarfee
2835dfecf96Smrg2,8: foofee
2845dfecf96Smrg
2855dfecf96Smrg# Simple backreference
2865dfecf96Smrg/(a|b|c)\1/
2875dfecf96Smrg>aa
2885dfecf96Smrg0,2: aa
2895dfecf96Smrg0,1: a
2905dfecf96Smrg/(a|b|c)(a|b|c)\1\2/
2915dfecf96Smrg>acac
2925dfecf96Smrg0,4: acac
2935dfecf96Smrg0,1: a
2945dfecf96Smrg1,2: c
2955dfecf96Smrg>xxxxacac
2965dfecf96Smrg4,8: acac
2975dfecf96Smrg4,5: a
2985dfecf96Smrg5,6: c
2995dfecf96Smrg>xxacabacbcacbbacbcaaccabcaca
3005dfecf96Smrg24,28: caca
3015dfecf96Smrg24,25: c
3025dfecf96Smrg25,26: a
3035dfecf96Smrg>xyabcccc
3045dfecf96Smrg4,8: cccc
3055dfecf96Smrg4,5: c
3065dfecf96Smrg5,6: c
3075dfecf96Smrg
3085dfecf96Smrg# Complex backreference
3095dfecf96Smrg/(a*b)\1/
3105dfecf96Smrg>xxxaaaaabaaaaab
3115dfecf96Smrg3,15: aaaaabaaaaab
3125dfecf96Smrg3,9: aaaaab
3135dfecf96Smrg/(ab+c)\1/
3145dfecf96Smrg>xaaabbbcabbbc
3155dfecf96Smrg3,13: abbbcabbbc
3165dfecf96Smrg3,8: abbbc
3175dfecf96Smrg/(ab?c)\1/
3185dfecf96Smrg>abcac
3195dfecf96Smrg:NOMATCH
3205dfecf96Smrg>abcacabcabc
3215dfecf96Smrg5,11: abcabc
3225dfecf96Smrg5,8: abc
3235dfecf96Smrg>abcacac
3245dfecf96Smrg3,7: acac
3255dfecf96Smrg3,5: acac
3265dfecf96Smrg
3275dfecf96Smrg# Very complex backreference
3285dfecf96Smrg/a(.*)b\1/
3295dfecf96Smrg>xxxab
3305dfecf96Smrg3,5: ab
3315dfecf96Smrg4,4: 
3325dfecf96Smrg>xxxxazzzbzzz
3335dfecf96Smrg4,12: azzzbzzz
3345dfecf96Smrg5,8: zzz
3355dfecf96Smrg
3365dfecf96Smrg# Case testing
3375dfecf96Smrg/abc/i
3385dfecf96Smrg>AbC
3395dfecf96Smrg0,3: AbC
3405dfecf96Smrg/[0-9][a-z]+/i
3415dfecf96Smrg>xxx0aaZxYT9
3425dfecf96Smrg3,10: 0aaZxYT
3435dfecf96Smrg/a.b/i
3445dfecf96Smrg>aaaaaaaaaaaxB
3455dfecf96Smrg10,13: axB
3465dfecf96Smrg/a.*z/i
3475dfecf96Smrg>xxxAaaaaZ
3485dfecf96Smrg3,9: AaaaaZ
3495dfecf96Smrg>xxaaaZaaa
3505dfecf96Smrg2,6: aaaZ
3515dfecf96Smrg/\<(lambda|defun|defmacro)\>/i
3525dfecf96Smrg>    (lambda
3535dfecf96Smrg5,11: lambda
3545dfecf96Smrg5,11: lambda
3555dfecf96Smrg/\<(nil|t)\>/i
3565dfecf96Smrg>it Nil
3575dfecf96Smrg3,6: Nil
3585dfecf96Smrg3,6: Nil
3595dfecf96Smrg/\<(begin|end)\>/i
3605dfecf96Smrg>beginning the ending EnD
3615dfecf96Smrg21,24: EnD
3625dfecf96Smrg21,24: EnD
3635dfecf96Smrg
3645dfecf96Smrg# Some newline tests
3655dfecf96Smrg/a.*/n
3665dfecf96Smrg>a\naaa
3675dfecf96Smrg0,1:a
3685dfecf96Smrg>xyza\naa
3695dfecf96Smrg3,4: a
3705dfecf96Smrg/a.+/n
3715dfecf96Smrg>a\naaa
3725dfecf96Smrg2,5: aaa
3735dfecf96Smrg>xyza\naa
3745dfecf96Smrg5,7: aa
3755dfecf96Smrg/a.?/n
3765dfecf96Smrg>a\naaa
3775dfecf96Smrg0,1: a
3785dfecf96Smrg>xyza\naa
3795dfecf96Smrg3,4: a
3805dfecf96Smrg
3815dfecf96Smrg# Newline tests envolving complex patterns
3825dfecf96Smrg/a.*b.*c/n
3835dfecf96Smrg>xxaa\nzyacb\nabc
3845dfecf96Smrg11,14: abc
3855dfecf96Smrg>xxxab\nabc\nc
3865dfecf96Smrg6,9: abc
3875dfecf96Smrg/a.+b.*c/n
3885dfecf96Smrg>ab\nbc\nabbc
3895dfecf96Smrg6,10: abbc
3905dfecf96Smrg/a.?b.*c/n
3915dfecf96Smrg>ab\ncabbc\ncc
3925dfecf96Smrg4,8: abbc
3935dfecf96Smrg/^foo$/n
3945dfecf96Smrg>bar\nfoobar\nfoo
3955dfecf96Smrg11,14: foo
3965dfecf96Smrg
3975dfecf96Smrg# Not so complex test involving a newline...
3985dfecf96Smrg/^\s*#\s*(define|include)\s+.+/n
3995dfecf96Smrg>#define\n#include x
4005dfecf96Smrg8,18: #include x
4015dfecf96Smrg9,16: include
4025dfecf96Smrg
4035dfecf96Smrg# Check if large strings are working
4045dfecf96Smrg/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/
4055dfecf96Smrg>zzzxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzzz
4065dfecf96Smrg3,259: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
4075dfecf96Smrg/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890~/
4085dfecf96Smrg>String here: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890~/
4095dfecf96Smrg13,333: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890~
4105dfecf96Smrg
4115dfecf96Smrg
4125dfecf96Smrg# Some complex repetitions not supported
4135dfecf96Smrg# Listed here only to make sure the library is not crashing on these
4145dfecf96Smrg#  Repetitions that match an empty match, or an empty string cannot follow
4155dfecf96Smrg# a complex repetition. A complex repetition is:
4165dfecf96Smrg#	.* or .+ or .?
4175dfecf96Smrg#	.{...} is not supported.
4185dfecf96Smrg/(.*)(\d*)/
4195dfecf96Smrg:BADRPT
4205dfecf96Smrg/(.*).(\d*)/
4215dfecf96Smrg:BADRPT
4225dfecf96Smrg/(.*)\<(\d*)/
4235dfecf96Smrg:BADRPT
4245dfecf96Smrg/(.*)\s(\d*)/
4255dfecf96Smrg:BADRPT
4265dfecf96Smrg/(.*)\D(\d*)/
4275dfecf96Smrg:BADRPT
4285dfecf96Smrg
4295dfecf96Smrg# This is a more clear pattern and partially works
4305dfecf96Smrg/(.*)\D(\d+)/
4315dfecf96Smrg>abcW12
4325dfecf96Smrg0,6: abcW12
4335dfecf96Smrg0,3: abc
4345dfecf96Smrg4,6: 12
4355dfecf96Smrg>abcW12abcW12
4365dfecf96Smrg0,6: abcW12
4375dfecf96Smrg0,3: abc
4385dfecf96Smrg4,6: 12
4395dfecf96Smrg# This wasn't working in the previous version, but now with only minimal
4405dfecf96Smrg# matches supported, it works.
4415dfecf96Smrg>abcW12abcW12a
4425dfecf96Smrg0,6: abcW12
4435dfecf96Smrg0,3: abc
4445dfecf96Smrg4,6: 12
4455dfecf96Smrg
4465dfecf96Smrg# Note the minimal match
4475dfecf96Smrg/.*\d/
4485dfecf96Smrg>a1a1a1aaaaaaa
4495dfecf96Smrg0,2: a1
4505dfecf96Smrg# Check match offsets
4515dfecf96Smrg/(.*)\d/
4525dfecf96Smrg>a1a1a1aaaaaaa
4535dfecf96Smrg0,2: a1
4545dfecf96Smrg0,1: a
4555dfecf96Smrg/.*(\d)/
4565dfecf96Smrg>a1a1a1aaaaaaa
4575dfecf96Smrg0,2: a1
4585dfecf96Smrg1,2: 1
4595dfecf96Smrg
4605dfecf96Smrg/.*(\d+)/
4615dfecf96Smrg:BADRPT
462f14f4646Smrg
463f14f4646Smrg# Regression fix, was matching empty string
464f14f4646Smrg/\\\d{3}|\\./
465f14f4646Smrg>\\
466f14f4646Smrg:NOMATCH
467f14f4646Smrg
468f14f4646Smrg/\\.|\\\d{3}/
469f14f4646Smrg>\\
470f14f4646Smrg:NOMATCH
471