1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
source [file dirname [info script]]/testing.tcl
needs cmd regexp
testConstraint regexp_are [expr {[regexp {\d} 1]}]
needs constraint regexp_are
# Test regexp counted repetitions
set n 0
foreach {pat str exp} {
a+ bac a
a{1,} bac a
a* bac {{}}
a{0,} bac {{}}
aa+ bac {}
a{2,} bac {}
a{2,} bacaad aa
a{3,} bacaad {}
{a{2,}$} bacaad {}
{a{2,}$} bacaa aa
{a{2,}$} ba {}
{a{2,}$} aa aa
{a{0,0}b$} b b
{a{1,1}b$} b {}
{a{1,1}b$} cab ab
{a{2,2}b$} cab {}
{a{2,2}b$} cabaabx {}
{a{2,2}b$} cacaab aab
ca{2,4}b cacaab caab
ca{2,3}b cacaab caab
ca{2,3}b cacaaab caaab
c(a|b){2,3}d xcbad {cbad a}
c(a|b){2,3}d xcabbd {cabbd b}
c(a|b){2,3}d xcbaaad {}
a{4} baaaad aaaa
a{2,5} baaaad aaaa
a{1,3} baaaad aaa
a{1,2} baaaad aa
a{3,4} baaaad aaaa
a{5,6} baaaad {}
a{4}? baaaad aaaa
a{2,5}? baaaad aa
a{1,3}? baaaad a
a{1,2}? baaaad a
a{3,4}? baaaad aaa
a{5,6}? baaaad {}
{\d{1,3}} 239 239
(aa|bb)?c xabbaac {aac aa}
(a|y)+ bac {a a}
(a|y){1,} bac {a a}
(a|y)* bac {{} {}}
(a|y){0,} bac {{} {}}
(a|y)a+ bac {}
(a|y){2,} bac {}
(a|y){2,} bacaad {aa a}
(a|y){3,} bacaad {}
{(a|y){2,}$} bacaad {}
{(a|y){2,}$} bacaa {aa a}
{(a|y){2,}$} ba {}
{(a|y){2,}$} aa {aa a}
{(a|y){0,0}b$} b {b {}}
{(a|y){1,1}b$} b {}
{(a|y){1,1}b$} cab {ab a}
{(a|y){2,2}b$} cab {}
{(a|y){2,2}b$} cabaabx {}
{(a|y){2,2}b$} cacaab {aab a}
c(a|y){2,4}b cacaab {caab a}
c(a|y){2,3}b cacaab {caab a}
c(a|y){2,3}b cacaaab {caaab a}
c((a|y)|b){2,3}d xcbad {cbad a a}
####c((a|y)|b){2,3}d xcabbd {cabbd b {}}
c((a|y)|b){2,3}d xcbaaad {}
(a|y){4} baaaad {aaaa a}
(a|y){2,5} baaaad {aaaa a}
(a|y){1,3} baaaad {aaa a}
(a|y){1,2} baaaad {aa a}
(a|y){3,4} baaaad {aaaa a}
(a|y){5,6} baaaad {}
(a|y){4}? baaaad {aaaa a}
(a|y){2,5}? baaaad {aa a}
(a|y){1,3}? baaaad {a a}
(a|y){1,2}? baaaad {a a}
(a|y){3,4}? baaaad {aaa a}
(a|y){5,6}? baaaad {}
{[[:alpha:]]+} _bcd56_ef bcd
{[[:alnum:]]+} _bcd56_ef bcd56
{[[:space:]]+} "_bc \t\r\n\f\v_" "{ \t\r\n\f\v}"
{[\x41-\x43]+} "_ABCD_" ABC
{\m.+\M} "#A test#" "{A test}"
{\m.+?\M} "#A test#" "A"
{\m\M} "a" ""
{ab*c} xnbbmbbbc {}
{.^xxx} yyy {}
{\mb} " abc " ""
####((a*)*b)*b aaaaaaaaaaaaaaaaaaaaaaaaab {b {} {}}
####(a*)* aab {aa {}}
{^([^:=]*)(:)?(=)?$} version {version version {} {}}
} {
if {[string match #* $pat]} {
continue
}
#puts \t[list $pat $str [regexp -inline -- $pat $str]]
test regcount-1.[incr n] "Test: regexp $pat $str" [list regexp -inline -- $pat $str] $exp
}
testreport
|