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