225 lines · 20.2 KB · Text
RawDownload
(load "../lib/regexp/regexp.sl") (assert (equal? (regexp-match-pos (regexp "abracadabra$") "abracadabracadabra") '((7 . 18))))(assert (equal? (regexp-match-pos (regexp "a...b") "abababbb") '((2 . 7))))(assert (equal? (regexp-match-pos (regexp "XXXXXX") "..XXXXXX") '((2 . 8))))(assert (equal? (regexp-match-pos (regexp "\\)") "()") '((1 . 2))))(assert (equal? (regexp-match-pos (regexp "a]") "a]a") '((0 . 2))))(assert (equal? (regexp-match-pos (regexp "\\}") "}") '((0 . 1))))(assert (equal? (regexp-match-pos (regexp "\\]") "]") '((0 . 1))))(assert (equal? (regexp-match-pos (regexp "]") "]") '((0 . 1))))(assert (equal? (regexp-match-pos (regexp "^a") "ax") '((0 . 1))))(assert (equal? (regexp-match-pos (regexp "\\^a") "a^a") '((1 . 3))))(assert (equal? (regexp-match-pos (regexp "a\\^") "a^") '((0 . 2))))(assert (equal? (regexp-match-pos (regexp "a$") "aa") '((1 . 2))))(assert (equal? (regexp-match-pos (regexp "a\\$") "a$") '((0 . 2))))(assert (equal? (regexp-match-pos (regexp "^$") "") '((0 . 0))))(assert (equal? (regexp-match-pos (regexp "$^") "") '((0 . 0))))(assert (equal? (regexp-match-pos (regexp "a($)") "aa") '((1 . 2) (2 . 2))))(assert (equal? (regexp-match-pos (regexp "a*(^a)") "aa") '((0 . 1) (0 . 1))))(assert (equal? (regexp-match-pos (regexp "(..)*(...)*") "a") '((0 . 0) NIL NIL)))(assert (equal? (regexp-match-pos (regexp "(..)*(...)*") "abcd") '((0 . 4) (2 . 4) NIL)))(assert (equal? (regexp-match-pos (regexp "(ab|a)(bc|c)") "abc") '((0 . 3) (0 . 2) (2 . 3))))(assert (equal? (regexp-match-pos (regexp "(ab)c|abc") "abc") '((0 . 3) (0 . 2))));FIXME? (assert (equal? (regexp-match-pos (regexp "a{0}b") "ab") '((1 . 2))));FIXME? (assert (equal? (regexp-match-pos (regexp "(a*)(b?)(b+)b{3}") "aaabbbbbbb") '((0 . 10) (0 . 3) (3 . 4) (4 . 7))));FIXME? (assert (equal? (regexp-match-pos (regexp "(a*)(b{0,1})(b{1,})b{3}") "aaabbbbbbb") '((0 . 10) (0 . 3) (3 . 4) (4 . 7))));FIXME? (assert (equal? (regexp-match-pos (regexp "a{9876543210}") "") '(BADBR)))(assert (equal? (regexp-match-pos (regexp "((a|a)|a)") "a") '((0 . 1) (0 . 1) (0 . 1))))(assert (equal? (regexp-match-pos (regexp "(a*)(a|aa)") "aaaa") '((0 . 4) (0 . 3) (3 . 4))))(assert (equal? (regexp-match-pos (regexp "a*(a.|aa)") "aaaa") '((0 . 4) (2 . 4))))(assert (equal? (regexp-match-pos (regexp "a(b)|c(d)|a(e)f") "aef") '((0 . 3) NIL NIL (1 . 2))))(assert (equal? (regexp-match-pos (regexp "(a|b)?.*") "b") '((0 . 1) (0 . 1))))(assert (equal? (regexp-match-pos (regexp "(a|b)c|a(b|c)") "ac") '((0 . 2) (0 . 1) NIL)))(assert (equal? (regexp-match-pos (regexp "(a|b)c|a(b|c)") "ab") '((0 . 2) NIL (1 . 2))))(assert (equal? (regexp-match-pos (regexp "(a|b)*c|(a|ab)*c") "abc") '((0 . 3) (1 . 2) NIL)))(assert (equal? (regexp-match-pos (regexp "(a|b)*c|(a|ab)*c") "xc") '((1 . 2) NIL NIL)))(assert (equal? (regexp-match-pos (regexp "(.a|.b).*|.*(.a|.b)") "xa") '((0 . 2) (0 . 2) NIL)))(assert (equal? (regexp-match-pos (regexp "a?(ab|ba)ab") "abab") '((0 . 4) (0 . 2))));FIXME? (assert (equal? (regexp-match-pos (regexp "a?(ac{0}b|ba)ab") "abab") '((0 . 4) (0 . 2))))(assert (equal? (regexp-match-pos (regexp "ab|abab") "abbabab") '((0 . 2))))(assert (equal? (regexp-match-pos (regexp "aba|bab|bba") "baaabbbaba") '((5 . 8))))(assert (equal? (regexp-match-pos (regexp "aba|bab") "baaabbbaba") '((6 . 9))))(assert (equal? (regexp-match-pos (regexp "(aa|aaa)*|(a|aaaaa)") "aa") '((0 . 2) (0 . 2) NIL)))(assert (equal? (regexp-match-pos (regexp "(a.|.a.)*|(a|.a...)") "aa") '((0 . 2) (0 . 2) NIL)))(assert (equal? (regexp-match-pos (regexp "ab|a") "xabc") '((1 . 3))))(assert (equal? (regexp-match-pos (regexp "ab|a") "xxabc") '((2 . 4))));CASEI! (assert (equal? (regexp-match-pos (regexp "(Ab|cD)*") "aBcD") '((0 . 4) (2 . 4))))(assert (equal? (regexp-match-pos (regexp "[^-]") "--a") '((2 . 3))))(assert (equal? (regexp-match-pos (regexp "[a\\-]*") "--a") '((0 . 3))))(assert (equal? (regexp-match-pos (regexp "[a-m\\-]*") "--amoma--") '((0 . 4))))(assert (equal? (regexp-match-pos (regexp ":::1:::0:|:::1:1:0:") ":::0:::1:::1:::0:") '((8 . 17))))(assert (equal? (regexp-match-pos (regexp ":::1:::0:|:::1:1:1:") ":::0:::1:::1:::0:") '((8 . 17))))(assert (equal? (regexp-match-pos (regexp "\n") "\n") '((0 . 1))))(assert (equal? (regexp-match-pos (regexp "\n") "\n") '((0 . 1))))(assert (equal? (regexp-match-pos (regexp "[^a]") "\n") '((0 . 1))))(assert (equal? (regexp-match-pos (regexp "\na") "\na") '((0 . 2))))(assert (equal? (regexp-match-pos (regexp "(a)(b)(c)") "abc") '((0 . 3) (0 . 1) (1 . 2) (2 . 3))))(assert (equal? (regexp-match-pos (regexp "xxx") "xxx") '((0 . 3))))(assert (equal? (regexp-match-pos (regexp "(^|[ (,;])((([Ff]eb[^ ]* *|0*2/|\\* */?)0*[6-7]))([^0-9]|$)") "feb 6,") '((0 . 6) (0 . 0) (0 . 5) (0 . 5) (0 . 4) (5 . 6))))(assert (equal? (regexp-match-pos (regexp "(^|[ (,;])((([Ff]eb[^ ]* *|0*2/|\\* */?)0*[6-7]))([^0-9]|$)") "2/7") '((0 . 3) (0 . 0) (0 . 3) (0 . 3) (0 . 2) (3 . 3))))(assert (equal? (regexp-match-pos (regexp "(^|[ (,;])((([Ff]eb[^ ]* *|0*2/|\\* */?)0*[6-7]))([^0-9]|$)") "feb 1,Feb 6") '((5 . 11) (5 . 6) (6 . 11) (6 . 11) (6 . 10) (11 . 11))))(assert (equal? (regexp-match-pos (regexp "((((((((((((((((((((((((((((((x))))))))))))))))))))))))))))))") "x") (map (λ (_) '(0 . 1)) (iota 31))))(assert (equal? (regexp-match-pos (regexp "((((((((((((((((((((((((((((((x))))))))))))))))))))))))))))))*") "xx") (cons '(0 . 2) (map (λ (_) '(1 . 2)) (iota 30)))))(assert (equal? (regexp-match-pos (regexp "a?(ab|ba)*") "ababababababababababababababababababababababababababababababababababababababababa") '((0 . 81) (79 . 81))))(assert (equal? (regexp-match-pos (regexp "abaa|abbaa|abbbaa|abbbbaa") "ababbabbbabbbabbbbabbbbaa") '((18 . 25))))(assert (equal? (regexp-match-pos (regexp "abaa|abbaa|abbbaa|abbbbaa") "ababbabbbabbbabbbbabaa") '((18 . 22))))(assert (equal? (regexp-match-pos (regexp "aaac|aabc|abac|abbc|baac|babc|bbac|bbbc") "baaabbbabac") '((7 . 11))))(assert (equal? (regexp-match-pos (regexp ".*") "#\x01#\xff") '((0 . 3))))(assert (equal? (regexp-match-pos (regexp "aaaa|bbbb|cccc|ddddd|eeeeee|fffffff|gggg|hhhh|iiiii|jjjjj|kkkkk|llll") "XaaaXbbbXcccXdddXeeeXfffXgggXhhhXiiiXjjjXkkkXlllXcbaXaaaa") '((53 . 57))))(assert (equal? (regexp-match-pos (regexp "a*a*a*a*a*b") "aaaaaaaaab") '((0 . 10))))(assert (equal? (regexp-match-pos (regexp "^") "") '((0 . 0))))(assert (equal? (regexp-match-pos (regexp "$") "") '((0 . 0))))(assert (equal? (regexp-match-pos (regexp "^$") "") '((0 . 0))))(assert (equal? (regexp-match-pos (regexp "^a$") "a") '((0 . 1))))(assert (equal? (regexp-match-pos (regexp "abc") "abc") '((0 . 3))))(assert (equal? (regexp-match-pos (regexp "abc") "xabcy") '((1 . 4))))(assert (equal? (regexp-match-pos (regexp "abc") "ababc") '((2 . 5))))(assert (equal? (regexp-match-pos (regexp "ab*c") "abc") '((0 . 3))))(assert (equal? (regexp-match-pos (regexp "ab*bc") "abc") '((0 . 3))))(assert (equal? (regexp-match-pos (regexp "ab*bc") "abbc") '((0 . 4))))(assert (equal? (regexp-match-pos (regexp "ab*bc") "abbbbc") '((0 . 6))))(assert (equal? (regexp-match-pos (regexp "ab+bc") "abbc") '((0 . 4))))(assert (equal? (regexp-match-pos (regexp "ab+bc") "abbbbc") '((0 . 6))))(assert (equal? (regexp-match-pos (regexp "ab?bc") "abbc") '((0 . 4))))(assert (equal? (regexp-match-pos (regexp "ab?bc") "abc") '((0 . 3))))(assert (equal? (regexp-match-pos (regexp "ab?c") "abc") '((0 . 3))))(assert (equal? (regexp-match-pos (regexp "^abc$") "abc") '((0 . 3))))(assert (equal? (regexp-match-pos (regexp "^abc") "abcc") '((0 . 3))))(assert (equal? (regexp-match-pos (regexp "abc$") "aabc") '((1 . 4))))(assert (equal? (regexp-match-pos (regexp "^") "abc") '((0 . 0))))(assert (equal? (regexp-match-pos (regexp "$") "abc") '((3 . 3))))(assert (equal? (regexp-match-pos (regexp "a.c") "abc") '((0 . 3))))(assert (equal? (regexp-match-pos (regexp "a.c") "axc") '((0 . 3))))(assert (equal? (regexp-match-pos (regexp "a.*c") "axyzc") '((0 . 5))))(assert (equal? (regexp-match-pos (regexp "a[bc]d") "abd") '((0 . 3))))(assert (equal? (regexp-match-pos (regexp "a[b-d]e") "ace") '((0 . 3))))(assert (equal? (regexp-match-pos (regexp "a[b-d]") "aac") '((1 . 3))))(assert (equal? (regexp-match-pos (regexp "a[\\-b]") "a-") '((0 . 2))))(assert (equal? (regexp-match-pos (regexp "a[b\\-]") "a-") '((0 . 2))))(assert (equal? (regexp-match-pos (regexp "a]") "a]") '((0 . 2))))(assert (equal? (regexp-match-pos (regexp "a[\\]]b") "a]b") '((0 . 3))))(assert (equal? (regexp-match-pos (regexp "a[^bc]d") "aed") '((0 . 3))))(assert (equal? (regexp-match-pos (regexp "a[^-b]c") "adc") '((0 . 3))))(assert (equal? (regexp-match-pos (regexp "a[^\\]b]c") "adc") '((0 . 3))))(assert (equal? (regexp-match-pos (regexp "ab|cd") "abc") '((0 . 2))))(assert (equal? (regexp-match-pos (regexp "ab|cd") "abcd") '((0 . 2))))(assert (equal? (regexp-match-pos (regexp "a\\(b") "a(b") '((0 . 3))))(assert (equal? (regexp-match-pos (regexp "a\\(*b") "ab") '((0 . 2))))(assert (equal? (regexp-match-pos (regexp "a\\(*b") "a((b") '((0 . 4))))(assert (equal? (regexp-match-pos (regexp "((a))") "abc") '((0 . 1) (0 . 1) (0 . 1))))(assert (equal? (regexp-match-pos (regexp "(a)b(c)") "abc") '((0 . 3) (0 . 1) (2 . 3))))(assert (equal? (regexp-match-pos (regexp "a+b+c") "aabbabc") '((4 . 7))))(assert (equal? (regexp-match-pos (regexp "a*") "aaa") '((0 . 3))))(assert (equal? (regexp-match-pos (regexp "(a*)*") "-") '((0 . 0) NIL)))(assert (equal? (regexp-match-pos (regexp "(a*)+") "-") '((0 . 0) (0 . 0))))(assert (equal? (regexp-match-pos (regexp "(a*|b)*") "-") '((0 . 0) NIL)))(assert (equal? (regexp-match-pos (regexp "(a+|b)*") "ab") '((0 . 2) (1 . 2))))(assert (equal? (regexp-match-pos (regexp "(a+|b)+") "ab") '((0 . 2) (1 . 2))))(assert (equal? (regexp-match-pos (regexp "(a+|b)?") "ab") '((0 . 1) (0 . 1))))(assert (equal? (regexp-match-pos (regexp "[^ab]*") "cde") '((0 . 3))))(assert (equal? (regexp-match-pos (regexp "(^)*") "-") '((0 . 0) NIL)))(assert (equal? (regexp-match-pos (regexp "a*") "") '((0 . 0))))(assert (equal? (regexp-match-pos (regexp "([abc])*d") "abbbcd") '((0 . 6) (4 . 5))))(assert (equal? (regexp-match-pos (regexp "([abc])*bcd") "abcd") '((0 . 4) (0 . 1))))(assert (equal? (regexp-match-pos (regexp "a|b|c|d|e") "e") '((0 . 1))))(assert (equal? (regexp-match-pos (regexp "(a|b|c|d|e)f") "ef") '((0 . 2) (0 . 1))))(assert (equal? (regexp-match-pos (regexp "((a*|b))*") "-") '((0 . 0) NIL NIL)))(assert (equal? (regexp-match-pos (regexp "abcd*efg") "abcdefg") '((0 . 7))))(assert (equal? (regexp-match-pos (regexp "ab*") "xabyabbbz") '((1 . 3))))(assert (equal? (regexp-match-pos (regexp "ab*") "xayabbbz") '((1 . 2))))(assert (equal? (regexp-match-pos (regexp "(ab|cd)e") "abcde") '((2 . 5) (2 . 4))))(assert (equal? (regexp-match-pos (regexp "[abhgefdc]ij") "hij") '((0 . 3))))(assert (equal? (regexp-match-pos (regexp "(a|b)c*d") "abcd") '((1 . 4) (1 . 2))))(assert (equal? (regexp-match-pos (regexp "(ab|ab*)bc") "abc") '((0 . 3) (0 . 1))))(assert (equal? (regexp-match-pos (regexp "a([bc]*)c*") "abc") '((0 . 3) (1 . 3))))(assert (equal? (regexp-match-pos (regexp "a([bc]*)(c*d)") "abcd") '((0 . 4) (1 . 3) (3 . 4))))(assert (equal? (regexp-match-pos (regexp "a([bc]+)(c*d)") "abcd") '((0 . 4) (1 . 3) (3 . 4))))(assert (equal? (regexp-match-pos (regexp "a([bc]*)(c+d)") "abcd") '((0 . 4) (1 . 2) (2 . 4))))(assert (equal? (regexp-match-pos (regexp "a[bcd]*dcdcde") "adcdcde") '((0 . 7))))(assert (equal? (regexp-match-pos (regexp "(ab|a)b*c") "abc") '((0 . 3) (0 . 2))))(assert (equal? (regexp-match-pos (regexp "((a)(b)c)(d)") "abcd") '((0 . 4) (0 . 3) (0 . 1) (1 . 2) (3 . 4))))(assert (equal? (regexp-match-pos (regexp "[A-Za-z_][A-Za-z0-9_]*") "alpha") '((0 . 5))))(assert (equal? (regexp-match-pos (regexp "^a(bc+|b[eh])g|.h$") "abh") '((1 . 3) NIL)))(assert (equal? (regexp-match-pos (regexp "(bc+d$|ef*g.|h?i(j|k))") "effgz") '((0 . 5) (0 . 5) NIL)))(assert (equal? (regexp-match-pos (regexp "(bc+d$|ef*g.|h?i(j|k))") "ij") '((0 . 2) (0 . 2) (1 . 2))))(assert (equal? (regexp-match-pos (regexp "(bc+d$|ef*g.|h?i(j|k))") "reffgz") '((1 . 6) (1 . 6) NIL)))(assert (equal? (regexp-match-pos (regexp "(((((((((a)))))))))") "a") '((0 . 1) (0 . 1) (0 . 1) (0 . 1) (0 . 1) (0 . 1) (0 . 1) (0 . 1) (0 . 1) (0 . 1))))(assert (equal? (regexp-match-pos (regexp "multiple words") "multiple words yeah") '((0 . 14))))(assert (equal? (regexp-match-pos (regexp "(.*)c(.*)") "abcde") '((0 . 5) (0 . 2) (3 . 5))))(assert (equal? (regexp-match-pos (regexp "abcd") "abcd") '((0 . 4))))(assert (equal? (regexp-match-pos (regexp "a(bc)d") "abcd") '((0 . 4) (1 . 3))))(assert (equal? (regexp-match-pos (regexp "a[-]?c") "ac") '((0 . 3))))(assert (equal? (regexp-match-pos (regexp "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]") "Muammar Qaddafi") '((0 . 15) NIL (10 . 12))))(assert (equal? (regexp-match-pos (regexp "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]") "Mo'ammar Gadhafi") '((0 . 16) NIL (11 . 13))))(assert (equal? (regexp-match-pos (regexp "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]") "Muammar Kaddafi") '((0 . 15) NIL (10 . 12))))(assert (equal? (regexp-match-pos (regexp "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]") "Muammar Qadhafi") '((0 . 15) NIL (10 . 12))))(assert (equal? (regexp-match-pos (regexp "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]") "Muammar Gadafi") '((0 . 14) NIL (10 . 11))))(assert (equal? (regexp-match-pos (regexp "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]") "Mu'ammar Qadafi") '((0 . 15) NIL (11 . 12))))(assert (equal? (regexp-match-pos (regexp "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]") "Moamar Gaddafi") '((0 . 14) NIL (9 . 11))))(assert (equal? (regexp-match-pos (regexp "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]") "Mu'ammar Qadhdhafi") '((0 . 18) NIL (13 . 15))))(assert (equal? (regexp-match-pos (regexp "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]") "Muammar Khaddafi") '((0 . 16) NIL (11 . 13))))(assert (equal? (regexp-match-pos (regexp "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]") "Muammar Ghaddafy") '((0 . 16) NIL (11 . 13))))(assert (equal? (regexp-match-pos (regexp "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]") "Muammar Ghadafi") '((0 . 15) NIL (11 . 12))))(assert (equal? (regexp-match-pos (regexp "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]") "Muammar Ghaddafi") '((0 . 16) NIL (11 . 13))))(assert (equal? (regexp-match-pos (regexp "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]") "Muamar Kaddafi") '((0 . 14) NIL (9 . 11))))(assert (equal? (regexp-match-pos (regexp "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]") "Muammar Quathafi") '((0 . 16) NIL (11 . 13))))(assert (equal? (regexp-match-pos (regexp "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]") "Muammar Gheddafi") '((0 . 16) NIL (11 . 13))))(assert (equal? (regexp-match-pos (regexp "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]") "Moammar Khadafy") '((0 . 15) NIL (11 . 12))))(assert (equal? (regexp-match-pos (regexp "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]") "Moammar Qudhafi") '((0 . 15) NIL (10 . 12))))(assert (equal? (regexp-match-pos (regexp "a+(b|c)*d+") "aabcdd") '((0 . 6) (3 . 4))))(assert (equal? (regexp-match-pos (regexp "^.+$") "vivi") '((0 . 4))))(assert (equal? (regexp-match-pos (regexp "^(.+)$") "vivi") '((0 . 4) (0 . 4))))(assert (equal? (regexp-match-pos (regexp "^([^!.]+).att.com!(.+)$") "gryphon.att.com!eby") '((0 . 19) (0 . 7) (16 . 19))))(assert (equal? (regexp-match-pos (regexp "^([^!]+!)?([^!]+)$") "bas") '((0 . 3) NIL (0 . 3))))(assert (equal? (regexp-match-pos (regexp "^([^!]+!)?([^!]+)$") "bar!bas") '((0 . 7) (0 . 4) (4 . 7))))(assert (equal? (regexp-match-pos (regexp "^([^!]+!)?([^!]+)$") "foo!bas") '((0 . 7) (0 . 4) (4 . 7))))(assert (equal? (regexp-match-pos (regexp "^.+!([^!]+!)([^!]+)$") "foo!bar!bas") '((0 . 11) (4 . 8) (8 . 11))))(assert (equal? (regexp-match-pos (regexp "((foo)|(bar))!bas") "bar!bas") '((0 . 7) (0 . 3) NIL (0 . 3))))(assert (equal? (regexp-match-pos (regexp "((foo)|(bar))!bas") "foo!bar!bas") '((4 . 11) (4 . 7) NIL (4 . 7))))(assert (equal? (regexp-match-pos (regexp "((foo)|(bar))!bas") "foo!bas") '((0 . 7) (0 . 3) (0 . 3) NIL)))(assert (equal? (regexp-match-pos (regexp "((foo)|bar)!bas") "bar!bas") '((0 . 7) (0 . 3) NIL)))(assert (equal? (regexp-match-pos (regexp "((foo)|bar)!bas") "foo!bar!bas") '((4 . 11) (4 . 7) NIL)))(assert (equal? (regexp-match-pos (regexp "((foo)|bar)!bas") "foo!bas") '((0 . 7) (0 . 3) (0 . 3))))(assert (equal? (regexp-match-pos (regexp "(foo|(bar))!bas") "bar!bas") '((0 . 7) (0 . 3) (0 . 3))))(assert (equal? (regexp-match-pos (regexp "(foo|(bar))!bas") "foo!bar!bas") '((4 . 11) (4 . 7) (4 . 7))))(assert (equal? (regexp-match-pos (regexp "(foo|(bar))!bas") "foo!bas") '((0 . 7) (0 . 3) NIL)))(assert (equal? (regexp-match-pos (regexp "(foo|bar)!bas") "bar!bas") '((0 . 7) (0 . 3))))(assert (equal? (regexp-match-pos (regexp "(foo|bar)!bas") "foo!bar!bas") '((4 . 11) (4 . 7))))(assert (equal? (regexp-match-pos (regexp "(foo|bar)!bas") "foo!bas") '((0 . 7) (0 . 3))))(assert (equal? (regexp-match-pos (regexp "^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$") "foo!bar!bas") '((0 . 11) (0 . 11) NIL NIL (4 . 8) (8 . 11))))(assert (equal? (regexp-match-pos (regexp "^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$") "bas") '((0 . 3) NIL (0 . 3) NIL NIL)))(assert (equal? (regexp-match-pos (regexp "^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$") "bar!bas") '((0 . 7) (0 . 4) (4 . 7) NIL NIL)))(assert (equal? (regexp-match-pos (regexp "^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$") "foo!bar!bas") '((0 . 11) NIL NIL (4 . 8) (8 . 11))))(assert (equal? (regexp-match-pos (regexp "^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$") "foo!bas") '((0 . 7) (0 . 4) (4 . 7) NIL NIL)))(assert (equal? (regexp-match-pos (regexp "^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$") "bas") '((0 . 3) (0 . 3) NIL (0 . 3) NIL NIL)))(assert (equal? (regexp-match-pos (regexp "^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$") "bar!bas") '((0 . 7) (0 . 7) (0 . 4) (4 . 7) NIL NIL)))(assert (equal? (regexp-match-pos (regexp "^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$") "foo!bar!bas") '((0 . 11) (0 . 11) NIL NIL (4 . 8) (8 . 11))))(assert (equal? (regexp-match-pos (regexp "^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$") "foo!bas") '((0 . 7) (0 . 7) (0 . 4) (4 . 7) NIL NIL)))(assert (equal? (regexp-match-pos (regexp ".*(/XXX).*") "/XXX") '((0 . 4) (0 . 4))))(assert (equal? (regexp-match-pos (regexp ".*(\\\\XXX).*") "\\XXX") '((0 . 4) (0 . 4))))(assert (equal? (regexp-match-pos (regexp "\\\\XXX") "\\XXX") '((0 . 4))))(assert (equal? (regexp-match-pos (regexp ".*(/000).*") "/000") '((0 . 4) (0 . 4))))(assert (equal? (regexp-match-pos (regexp ".*(\\\\000).*") "\\000") '((0 . 4) (0 . 4))))(assert (equal? (regexp-match-pos (regexp "\\\\000") "\\000") '((0 . 4)))) (assert-fail (regexp "blah)")) (assert (equal? (list "bl" "hfoob" "r") (regexp-split (regexp "a+") "blahfoobaaaar")))(assert (equal? (list "" "foo" "" "acblah") (regexp-split (regexp "ab+c") "abbcfooabcabbbbbcacblah")))(assert (equal? (list "foo" "acblah") (regexp-split (regexp "ab+c") "abbcfooabcabbbbbcacblah" :trim T)))(assert (equal? (list "" "h" "λ" "f" "o" "γ" "") (regexp-split (regexp "") "hλfoγ")))(assert (equal? (list "" "") (regexp-split (regexp "") ""))) (assert (equal? "fooblahbaz" (regexp-sub (regexp "q+") "fooqqqqbaz" "blah")))(assert (equal? "fooblahbaz" (regexp-sub (regexp "q+") "fooqqqqbaz" "blah" :all T)))(assert (equal? "fooblaaaaahbar" (regexp-sub (regexp "(a+)q+") "fooaaaaaqqqbar" «bl\1h»)))(assert (equal? "hellowoopqqbyewoopqqqqblah" (regexp-sub (regexp "(q+)foo") "helloqqfoobyeqqqqfooblah" "woop\\1" :all T)))(assert (equal? "helloabcWOOPqqbyedefWOOPqqqqblah" (regexp-sub (regexp "(q+)foo(abc|def)") "helloqqfooabcbyeqqqqfoodefblah" «\2WOOP\1» :all T)))(assert (equal? "person: first name: Bilbo, last name: Baggins" (regexp-sub (regexp "([A-Z][a-z]+), ([A-Z][a-z]+)") "person: Baggins, Bilbo" «first name: \2, last name: \1»)))(assert (equal? "fooaaaaboo" (regexp-sub (regexp "hi(a+)") "foohiaaaa" «\1boo\2»))) (assert (equal? '((0 . 4)) (regexp-match-pos (regexp "ab**") "abbbc")))(assert (equal? '((0 . 4)) (regexp-match-pos (regexp "ab+*") "abbbc")))(assert (equal? '((0 . 1)) (regexp-match-pos (regexp "ab+*") "aabbbc")))(assert (equal? '((1 . 5)) (regexp-match-pos (regexp "ab+") "aabbbc")))

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t