diff -U3 /tmp/cirrus-ci-build/src/test/modules/test_regex/expected/test_regex.out /tmp/cirrus-ci-build/build/testrun/test_regex-running/regress/results/test_regex.out --- /tmp/cirrus-ci-build/src/test/modules/test_regex/expected/test_regex.out 2024-10-31 13:33:17.305426000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/test_regex-running/regress/results/test_regex.out 2024-10-31 13:37:42.283967000 +0000 @@ -1,5084 +1 @@ --- This file is based on tests/reg.test from the Tcl distribution, --- which is marked --- # Copyright (c) 1998, 1999 Henry Spencer. All rights reserved. --- The full copyright notice can be found in src/backend/regex/COPYRIGHT. --- Most commented lines below are copied from reg.test. Each --- test case is followed by an equivalent test using test_regex(). -create extension test_regex; -set standard_conforming_strings = on; --- # support functions and preliminary misc. --- # This is sensitive to changes in message wording, but we really have to --- # test the code->message expansion at least once. --- ::tcltest::test reg-0.1 "regexp error reporting" { --- list [catch {regexp (*) ign} msg] $msg --- } {1 {couldn't compile regular expression pattern: quantifier operand invalid}} -select * from test_regex('(*)', '', ''); -ERROR: invalid regular expression: quantifier operand invalid --- doing 1 "basic sanity checks" --- expectMatch 1.1 & abc abc abc -select * from test_regex('abc', 'abc', ''); - test_regex ------------- - {0} - {abc} -(2 rows) - -select * from test_regex('abc', 'abc', 'b'); - test_regex ------------- - {0} - {abc} -(2 rows) - --- expectNomatch 1.2 & abc def -select * from test_regex('abc', 'def', ''); - test_regex ------------- - {0} -(1 row) - -select * from test_regex('abc', 'def', 'b'); - test_regex ------------- - {0} -(1 row) - --- expectMatch 1.3 & abc xyabxabce abc -select * from test_regex('abc', 'xyabxabce', ''); - test_regex ------------- - {0} - {abc} -(2 rows) - -select * from test_regex('abc', 'xyabxabce', 'b'); - test_regex ------------- - {0} - {abc} -(2 rows) - --- doing 2 "invalid option combinations" --- expectError 2.1 qe a INVARG -select * from test_regex('a', '', 'qe'); -ERROR: invalid regular expression: invalid argument to regex function --- expectError 2.2 qa a INVARG -select * from test_regex('a', '', 'qa'); -ERROR: invalid regular expression: invalid argument to regex function --- expectError 2.3 qx a INVARG -select * from test_regex('a', '', 'qx'); -ERROR: invalid regular expression: invalid argument to regex function --- expectError 2.4 qn a INVARG -select * from test_regex('a', '', 'qn'); -ERROR: invalid regular expression: invalid argument to regex function --- expectError 2.5 ba a INVARG -select * from test_regex('a', '', 'ba'); -ERROR: invalid regular expression: invalid argument to regex function --- doing 3 "basic syntax" --- expectIndices 3.1 &NS "" a {0 -1} -select * from test_regex('', 'a', '0NS'); - test_regex ---------------------------------- - {0,REG_UUNSPEC,REG_UEMPTYMATCH} - {"0 -1"} -(2 rows) - -select * from test_regex('', 'a', '0NSb'); - test_regex ---------------------------------- - {0,REG_UUNSPEC,REG_UEMPTYMATCH} - {"0 -1"} -(2 rows) - --- expectMatch 3.2 NS a| a a -select * from test_regex('a|', 'a', 'NS'); - test_regex ---------------------------------- - {0,REG_UUNSPEC,REG_UEMPTYMATCH} - {a} -(2 rows) - --- expectMatch 3.3 - a|b a a -select * from test_regex('a|b', 'a', '-'); - test_regex ------------- - {0} - {a} -(2 rows) - --- expectMatch 3.4 - a|b b b -select * from test_regex('a|b', 'b', '-'); - test_regex ------------- - {0} - {b} -(2 rows) - --- expectMatch 3.5 NS a||b b b -select * from test_regex('a||b', 'b', 'NS'); - test_regex ---------------------------------- - {0,REG_UUNSPEC,REG_UEMPTYMATCH} - {b} -(2 rows) - --- expectMatch 3.6 & ab ab ab -select * from test_regex('ab', 'ab', ''); - test_regex ------------- - {0} - {ab} -(2 rows) - -select * from test_regex('ab', 'ab', 'b'); - test_regex ------------- - {0} - {ab} -(2 rows) - --- doing 4 "parentheses" --- expectMatch 4.1 - (a)e ae ae a -select * from test_regex('(a)e', 'ae', '-'); - test_regex ------------- - {1} - {ae,a} -(2 rows) - --- expectMatch 4.2 oPR (.)\1e abeaae aae {} -select * from test_regex('(.)\1e', 'abeaae', 'oPR'); - test_regex --------------------------------- - {1,REG_UBACKREF,REG_UNONPOSIX} - {aae,NULL} -(2 rows) - --- expectMatch 4.3 b {\(a\)b} ab ab a -select * from test_regex('\(a\)b', 'ab', 'b'); - test_regex ------------- - {1} - {ab,a} -(2 rows) - --- expectMatch 4.4 - a((b)c) abc abc bc b -select * from test_regex('a((b)c)', 'abc', '-'); - test_regex ------------- - {2} - {abc,bc,b} -(2 rows) - --- expectMatch 4.5 - a(b)(c) abc abc b c -select * from test_regex('a(b)(c)', 'abc', '-'); - test_regex ------------- - {2} - {abc,b,c} -(2 rows) - --- expectError 4.6 - a(b EPAREN -select * from test_regex('a(b', '', '-'); -ERROR: invalid regular expression: parentheses () not balanced --- expectError 4.7 b {a\(b} EPAREN -select * from test_regex('a\(b', '', 'b'); -ERROR: invalid regular expression: parentheses () not balanced --- # sigh, we blew it on the specs here... someday this will be fixed in POSIX, --- # but meanwhile, it's fixed in AREs --- expectMatch 4.8 eU a)b a)b a)b -select * from test_regex('a)b', 'a)b', 'eU'); - test_regex ------------------ - {0,REG_UPBOTCH} - {a)b} -(2 rows) - --- expectError 4.9 - a)b EPAREN -select * from test_regex('a)b', '', '-'); -ERROR: invalid regular expression: parentheses () not balanced --- expectError 4.10 b {a\)b} EPAREN -select * from test_regex('a\)b', '', 'b'); -ERROR: invalid regular expression: parentheses () not balanced --- expectMatch 4.11 P a(?:b)c abc abc -select * from test_regex('a(?:b)c', 'abc', 'P'); - test_regex -------------------- - {0,REG_UNONPOSIX} - {abc} -(2 rows) - --- expectError 4.12 e a(?:b)c BADRPT -select * from test_regex('a(?:b)c', '', 'e'); -ERROR: invalid regular expression: quantifier operand invalid --- expectIndices 4.13 S a()b ab {0 1} {1 0} -select * from test_regex('a()b', 'ab', '0S'); - test_regex ------------------ - {1,REG_UUNSPEC} - {"0 1","1 0"} -(2 rows) - --- expectMatch 4.14 SP a(?:)b ab ab -select * from test_regex('a(?:)b', 'ab', 'SP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_UUNSPEC} - {ab} -(2 rows) - --- expectIndices 4.15 S a(|b)c ac {0 1} {1 0} -select * from test_regex('a(|b)c', 'ac', '0S'); - test_regex ------------------ - {1,REG_UUNSPEC} - {"0 1","1 0"} -(2 rows) - --- expectMatch 4.16 S a(b|)c abc abc b -select * from test_regex('a(b|)c', 'abc', 'S'); - test_regex ------------------ - {1,REG_UUNSPEC} - {abc,b} -(2 rows) - --- doing 5 "simple one-char matching" --- # general case of brackets done later --- expectMatch 5.1 & a.b axb axb -select * from test_regex('a.b', 'axb', ''); - test_regex ------------- - {0} - {axb} -(2 rows) - -select * from test_regex('a.b', 'axb', 'b'); - test_regex ------------- - {0} - {axb} -(2 rows) - --- expectNomatch 5.2 &n "a.b" "a\nb" -select * from test_regex('a.b', E'a\nb', 'n'); - test_regex ------------- - {0} -(1 row) - -select * from test_regex('a.b', E'a\nb', 'nb'); - test_regex ------------- - {0} -(1 row) - --- expectMatch 5.3 & {a[bc]d} abd abd -select * from test_regex('a[bc]d', 'abd', ''); - test_regex ------------- - {0} - {abd} -(2 rows) - -select * from test_regex('a[bc]d', 'abd', 'b'); - test_regex ------------- - {0} - {abd} -(2 rows) - --- expectMatch 5.4 & {a[bc]d} acd acd -select * from test_regex('a[bc]d', 'acd', ''); - test_regex ------------- - {0} - {acd} -(2 rows) - -select * from test_regex('a[bc]d', 'acd', 'b'); - test_regex ------------- - {0} - {acd} -(2 rows) - --- expectNomatch 5.5 & {a[bc]d} aed -select * from test_regex('a[bc]d', 'aed', ''); - test_regex ------------- - {0} -(1 row) - -select * from test_regex('a[bc]d', 'aed', 'b'); - test_regex ------------- - {0} -(1 row) - --- expectNomatch 5.6 & {a[^bc]d} abd -select * from test_regex('a[^bc]d', 'abd', ''); - test_regex ------------- - {0} -(1 row) - -select * from test_regex('a[^bc]d', 'abd', 'b'); - test_regex ------------- - {0} -(1 row) - --- expectMatch 5.7 & {a[^bc]d} aed aed -select * from test_regex('a[^bc]d', 'aed', ''); - test_regex ------------- - {0} - {aed} -(2 rows) - -select * from test_regex('a[^bc]d', 'aed', 'b'); - test_regex ------------- - {0} - {aed} -(2 rows) - --- expectNomatch 5.8 &p "a\[^bc]d" "a\nd" -select * from test_regex('a[^bc]d', E'a\nd', 'p'); - test_regex ------------- - {0} -(1 row) - -select * from test_regex('a[^bc]d', E'a\nd', 'pb'); - test_regex ------------- - {0} -(1 row) - --- doing 6 "context-dependent syntax" --- # plus odds and ends --- expectError 6.1 - * BADRPT -select * from test_regex('*', '', '-'); -ERROR: invalid regular expression: quantifier operand invalid --- expectMatch 6.2 b * * * -select * from test_regex('*', '*', 'b'); - test_regex ------------- - {0} - {*} -(2 rows) - --- expectMatch 6.3 b {\(*\)} * * * -select * from test_regex('\(*\)', '*', 'b'); - test_regex ------------- - {1} - {*,*} -(2 rows) - --- expectError 6.4 - (*) BADRPT -select * from test_regex('(*)', '', '-'); -ERROR: invalid regular expression: quantifier operand invalid --- expectMatch 6.5 b ^* * * -select * from test_regex('^*', '*', 'b'); - test_regex ------------- - {0} - {*} -(2 rows) - --- expectError 6.6 - ^* BADRPT -select * from test_regex('^*', '', '-'); -ERROR: invalid regular expression: quantifier operand invalid --- expectNomatch 6.7 & ^b ^b -select * from test_regex('^b', '^b', ''); - test_regex ------------- - {0} -(1 row) - -select * from test_regex('^b', '^b', 'b'); - test_regex ------------- - {0} -(1 row) - --- expectMatch 6.8 b x^ x^ x^ -select * from test_regex('x^', 'x^', 'b'); - test_regex ------------- - {0} - {x^} -(2 rows) - --- expectNomatch 6.9 I x^ x -select * from test_regex('x^', 'x', 'I'); - test_regex ---------------------- - {0,REG_UIMPOSSIBLE} -(1 row) - --- expectMatch 6.10 n "\n^" "x\nb" "\n" -select * from test_regex(E'\n^', E'x\nb', 'n'); - test_regex ------------- - {0} - {" + - "} -(2 rows) - --- expectNomatch 6.11 bS {\(^b\)} ^b -select * from test_regex('\(^b\)', '^b', 'bS'); - test_regex ------------------ - {1,REG_UUNSPEC} -(1 row) - --- expectMatch 6.12 - (^b) b b b -select * from test_regex('(^b)', 'b', '-'); - test_regex ------------- - {1} - {b,b} -(2 rows) - --- expectMatch 6.13 & {x$} x x -select * from test_regex('x$', 'x', ''); - test_regex ------------- - {0} - {x} -(2 rows) - -select * from test_regex('x$', 'x', 'b'); - test_regex ------------- - {0} - {x} -(2 rows) - --- expectMatch 6.14 bS {\(x$\)} x x x -select * from test_regex('\(x$\)', 'x', 'bS'); - test_regex ------------------ - {1,REG_UUNSPEC} - {x,x} -(2 rows) - --- expectMatch 6.15 - {(x$)} x x x -select * from test_regex('(x$)', 'x', '-'); - test_regex ------------- - {1} - {x,x} -(2 rows) - --- expectMatch 6.16 b {x$y} "x\$y" "x\$y" -select * from test_regex('x$y', 'x$y', 'b'); - test_regex ------------- - {0} - {x$y} -(2 rows) - --- expectNomatch 6.17 I {x$y} xy -select * from test_regex('x$y', 'xy', 'I'); - test_regex ---------------------- - {0,REG_UIMPOSSIBLE} -(1 row) - --- expectMatch 6.18 n "x\$\n" "x\n" "x\n" -select * from test_regex(E'x$\n', E'x\n', 'n'); - test_regex ------------- - {0} - {"x + - "} -(2 rows) - --- expectError 6.19 - + BADRPT -select * from test_regex('+', '', '-'); -ERROR: invalid regular expression: quantifier operand invalid --- expectError 6.20 - ? BADRPT -select * from test_regex('?', '', '-'); -ERROR: invalid regular expression: quantifier operand invalid --- These two are not yet incorporated in Tcl, cf --- https://core.tcl-lang.org/tcl/tktview?name=5ea71fdcd3291c38 --- expectError 6.21 - {x(\w)(?=(\1))} ESUBREG -select * from test_regex('x(\w)(?=(\1))', '', '-'); -ERROR: invalid regular expression: invalid backreference number --- expectMatch 6.22 HP {x(?=((foo)))} xfoo x -select * from test_regex('x(?=((foo)))', 'xfoo', 'HP'); - test_regex ------------------------------------ - {0,REG_ULOOKAROUND,REG_UNONPOSIX} - {x} -(2 rows) - --- doing 7 "simple quantifiers" --- expectMatch 7.1 &N a* aa aa -select * from test_regex('a*', 'aa', 'N'); - test_regex ---------------------- - {0,REG_UEMPTYMATCH} - {aa} -(2 rows) - -select * from test_regex('a*', 'aa', 'Nb'); - test_regex ---------------------- - {0,REG_UEMPTYMATCH} - {aa} -(2 rows) - --- expectIndices 7.2 &N a* b {0 -1} -select * from test_regex('a*', 'b', '0N'); - test_regex ---------------------- - {0,REG_UEMPTYMATCH} - {"0 -1"} -(2 rows) - -select * from test_regex('a*', 'b', '0Nb'); - test_regex ---------------------- - {0,REG_UEMPTYMATCH} - {"0 -1"} -(2 rows) - --- expectMatch 7.3 - a+ aa aa -select * from test_regex('a+', 'aa', '-'); - test_regex ------------- - {0} - {aa} -(2 rows) - --- expectMatch 7.4 - a?b ab ab -select * from test_regex('a?b', 'ab', '-'); - test_regex ------------- - {0} - {ab} -(2 rows) - --- expectMatch 7.5 - a?b b b -select * from test_regex('a?b', 'b', '-'); - test_regex ------------- - {0} - {b} -(2 rows) - --- expectError 7.6 - ** BADRPT -select * from test_regex('**', '', '-'); -ERROR: invalid regular expression: quantifier operand invalid --- expectMatch 7.7 bN ** *** *** -select * from test_regex('**', '***', 'bN'); - test_regex ---------------------- - {0,REG_UEMPTYMATCH} - {***} -(2 rows) - --- expectError 7.8 & a** BADRPT -select * from test_regex('a**', '', ''); -ERROR: invalid regular expression: quantifier operand invalid -select * from test_regex('a**', '', 'b'); -ERROR: invalid regular expression: quantifier operand invalid --- expectError 7.9 & a**b BADRPT -select * from test_regex('a**b', '', ''); -ERROR: invalid regular expression: quantifier operand invalid -select * from test_regex('a**b', '', 'b'); -ERROR: invalid regular expression: quantifier operand invalid --- expectError 7.10 & *** BADRPT -select * from test_regex('***', '', ''); -ERROR: invalid regular expression: quantifier operand invalid -select * from test_regex('***', '', 'b'); -ERROR: invalid regular expression: quantifier operand invalid --- expectError 7.11 - a++ BADRPT -select * from test_regex('a++', '', '-'); -ERROR: invalid regular expression: quantifier operand invalid --- expectError 7.12 - a?+ BADRPT -select * from test_regex('a?+', '', '-'); -ERROR: invalid regular expression: quantifier operand invalid --- expectError 7.13 - a?* BADRPT -select * from test_regex('a?*', '', '-'); -ERROR: invalid regular expression: quantifier operand invalid --- expectError 7.14 - a+* BADRPT -select * from test_regex('a+*', '', '-'); -ERROR: invalid regular expression: quantifier operand invalid --- expectError 7.15 - a*+ BADRPT -select * from test_regex('a*+', '', '-'); -ERROR: invalid regular expression: quantifier operand invalid --- tests for ancient brenext() bugs; not currently in Tcl -select * from test_regex('.*b', 'aaabbb', 'b'); - test_regex ------------- - {0} - {aaabbb} -(2 rows) - -select * from test_regex('.\{1,10\}', 'abcdef', 'bQ'); - test_regex ------------------ - {0,REG_UBOUNDS} - {abcdef} -(2 rows) - --- doing 8 "braces" --- expectMatch 8.1 NQ "a{0,1}" "" "" -select * from test_regex('a{0,1}', '', 'NQ'); - test_regex ---------------------------------- - {0,REG_UBOUNDS,REG_UEMPTYMATCH} - {""} -(2 rows) - --- expectMatch 8.2 NQ "a{0,1}" ac a -select * from test_regex('a{0,1}', 'ac', 'NQ'); - test_regex ---------------------------------- - {0,REG_UBOUNDS,REG_UEMPTYMATCH} - {a} -(2 rows) - --- expectError 8.3 - "a{1,0}" BADBR -select * from test_regex('a{1,0}', '', '-'); -ERROR: invalid regular expression: invalid repetition count(s) --- expectError 8.4 - "a{1,2,3}" BADBR -select * from test_regex('a{1,2,3}', '', '-'); -ERROR: invalid regular expression: invalid repetition count(s) --- expectError 8.5 - "a{257}" BADBR -select * from test_regex('a{257}', '', '-'); -ERROR: invalid regular expression: invalid repetition count(s) --- expectError 8.6 - "a{1000}" BADBR -select * from test_regex('a{1000}', '', '-'); -ERROR: invalid regular expression: invalid repetition count(s) --- expectError 8.7 - "a{1" EBRACE -select * from test_regex('a{1', '', '-'); -ERROR: invalid regular expression: braces {} not balanced --- expectError 8.8 - "a{1n}" BADBR -select * from test_regex('a{1n}', '', '-'); -ERROR: invalid regular expression: invalid repetition count(s) --- expectMatch 8.9 BS "a{b" "a\{b" "a\{b" -select * from test_regex('a{b', 'a{b', 'BS'); - test_regex ------------------------------ - {0,REG_UBRACES,REG_UUNSPEC} - {"a{b"} -(2 rows) - --- expectMatch 8.10 BS "a{" "a\{" "a\{" -select * from test_regex('a{', 'a{', 'BS'); - test_regex ------------------------------ - {0,REG_UBRACES,REG_UUNSPEC} - {"a{"} -(2 rows) - --- expectMatch 8.11 bQ "a\\{0,1\\}b" cb b -select * from test_regex('a\{0,1\}b', 'cb', 'bQ'); - test_regex ------------------ - {0,REG_UBOUNDS} - {b} -(2 rows) - --- expectError 8.12 b "a\\{0,1" EBRACE -select * from test_regex('a\{0,1', '', 'b'); -ERROR: invalid regular expression: braces {} not balanced --- expectError 8.13 - "a{0,1\\" BADBR -select * from test_regex('a{0,1\', '', '-'); -ERROR: invalid regular expression: invalid repetition count(s) --- expectMatch 8.14 Q "a{0}b" ab b -select * from test_regex('a{0}b', 'ab', 'Q'); - test_regex ------------------ - {0,REG_UBOUNDS} - {b} -(2 rows) - --- expectMatch 8.15 Q "a{0,0}b" ab b -select * from test_regex('a{0,0}b', 'ab', 'Q'); - test_regex ------------------ - {0,REG_UBOUNDS} - {b} -(2 rows) - --- expectMatch 8.16 Q "a{0,1}b" ab ab -select * from test_regex('a{0,1}b', 'ab', 'Q'); - test_regex ------------------ - {0,REG_UBOUNDS} - {ab} -(2 rows) - --- expectMatch 8.17 Q "a{0,2}b" b b -select * from test_regex('a{0,2}b', 'b', 'Q'); - test_regex ------------------ - {0,REG_UBOUNDS} - {b} -(2 rows) - --- expectMatch 8.18 Q "a{0,2}b" aab aab -select * from test_regex('a{0,2}b', 'aab', 'Q'); - test_regex ------------------ - {0,REG_UBOUNDS} - {aab} -(2 rows) - --- expectMatch 8.19 Q "a{0,}b" aab aab -select * from test_regex('a{0,}b', 'aab', 'Q'); - test_regex ------------------ - {0,REG_UBOUNDS} - {aab} -(2 rows) - --- expectMatch 8.20 Q "a{1,1}b" aab ab -select * from test_regex('a{1,1}b', 'aab', 'Q'); - test_regex ------------------ - {0,REG_UBOUNDS} - {ab} -(2 rows) - --- expectMatch 8.21 Q "a{1,3}b" aaaab aaab -select * from test_regex('a{1,3}b', 'aaaab', 'Q'); - test_regex ------------------ - {0,REG_UBOUNDS} - {aaab} -(2 rows) - --- expectNomatch 8.22 Q "a{1,3}b" b -select * from test_regex('a{1,3}b', 'b', 'Q'); - test_regex ------------------ - {0,REG_UBOUNDS} -(1 row) - --- expectMatch 8.23 Q "a{1,}b" aab aab -select * from test_regex('a{1,}b', 'aab', 'Q'); - test_regex ------------------ - {0,REG_UBOUNDS} - {aab} -(2 rows) - --- expectNomatch 8.24 Q "a{2,3}b" ab -select * from test_regex('a{2,3}b', 'ab', 'Q'); - test_regex ------------------ - {0,REG_UBOUNDS} -(1 row) - --- expectMatch 8.25 Q "a{2,3}b" aaaab aaab -select * from test_regex('a{2,3}b', 'aaaab', 'Q'); - test_regex ------------------ - {0,REG_UBOUNDS} - {aaab} -(2 rows) - --- expectNomatch 8.26 Q "a{2,}b" ab -select * from test_regex('a{2,}b', 'ab', 'Q'); - test_regex ------------------ - {0,REG_UBOUNDS} -(1 row) - --- expectMatch 8.27 Q "a{2,}b" aaaab aaaab -select * from test_regex('a{2,}b', 'aaaab', 'Q'); - test_regex ------------------ - {0,REG_UBOUNDS} - {aaaab} -(2 rows) - --- doing 9 "brackets" --- expectMatch 9.1 & {a[bc]} ac ac -select * from test_regex('a[bc]', 'ac', ''); - test_regex ------------- - {0} - {ac} -(2 rows) - -select * from test_regex('a[bc]', 'ac', 'b'); - test_regex ------------- - {0} - {ac} -(2 rows) - --- expectMatch 9.2 & {a[-]} a- a- -select * from test_regex('a[-]', 'a-', ''); - test_regex ------------- - {0} - {a-} -(2 rows) - -select * from test_regex('a[-]', 'a-', 'b'); - test_regex ------------- - {0} - {a-} -(2 rows) - --- expectMatch 9.3 & {a[[.-.]]} a- a- -select * from test_regex('a[[.-.]]', 'a-', ''); - test_regex ------------- - {0} - {a-} -(2 rows) - -select * from test_regex('a[[.-.]]', 'a-', 'b'); - test_regex ------------- - {0} - {a-} -(2 rows) - --- expectMatch 9.4 &L {a[[.zero.]]} a0 a0 -select * from test_regex('a[[.zero.]]', 'a0', 'L'); - test_regex ------------------ - {0,REG_ULOCALE} - {a0} -(2 rows) - -select * from test_regex('a[[.zero.]]', 'a0', 'Lb'); - test_regex ------------------ - {0,REG_ULOCALE} - {a0} -(2 rows) - --- expectMatch 9.5 &LM {a[[.zero.]-9]} a2 a2 -select * from test_regex('a[[.zero.]-9]', 'a2', 'LM'); - test_regex ------------------------------ - {0,REG_UUNPORT,REG_ULOCALE} - {a2} -(2 rows) - -select * from test_regex('a[[.zero.]-9]', 'a2', 'LMb'); - test_regex ------------------------------ - {0,REG_UUNPORT,REG_ULOCALE} - {a2} -(2 rows) - --- expectMatch 9.6 &M {a[0-[.9.]]} a2 a2 -select * from test_regex('a[0-[.9.]]', 'a2', 'M'); - test_regex ------------------ - {0,REG_UUNPORT} - {a2} -(2 rows) - -select * from test_regex('a[0-[.9.]]', 'a2', 'Mb'); - test_regex ------------------ - {0,REG_UUNPORT} - {a2} -(2 rows) - --- expectMatch 9.7 &+L {a[[=x=]]} ax ax -select * from test_regex('a[[=x=]]', 'ax', '+L'); - test_regex ------------------ - {0,REG_ULOCALE} - {ax} -(2 rows) - -select * from test_regex('a[[=x=]]', 'ax', '+Lb'); - test_regex ------------------ - {0,REG_ULOCALE} - {ax} -(2 rows) - --- expectMatch 9.8 &+L {a[[=x=]]} ay ay -select * from test_regex('a[[=x=]]', 'ay', '+L'); - test_regex ------------------ - {0,REG_ULOCALE} - {ay} -(2 rows) - -select * from test_regex('a[[=x=]]', 'ay', '+Lb'); - test_regex ------------------ - {0,REG_ULOCALE} - {ay} -(2 rows) - --- expectNomatch 9.9 &+L {a[[=x=]]} az -select * from test_regex('a[[=x=]]', 'az', '+L'); - test_regex ------------------ - {0,REG_ULOCALE} -(1 row) - -select * from test_regex('a[[=x=]]', 'az', '+Lb'); - test_regex ------------------ - {0,REG_ULOCALE} -(1 row) - --- expectMatch 9.9b &iL {a[[=Y=]]} ay ay -select * from test_regex('a[[=Y=]]', 'ay', 'iL'); - test_regex ------------------ - {0,REG_ULOCALE} - {ay} -(2 rows) - -select * from test_regex('a[[=Y=]]', 'ay', 'iLb'); - test_regex ------------------ - {0,REG_ULOCALE} - {ay} -(2 rows) - --- expectNomatch 9.9c &L {a[[=Y=]]} ay -select * from test_regex('a[[=Y=]]', 'ay', 'L'); - test_regex ------------------ - {0,REG_ULOCALE} -(1 row) - -select * from test_regex('a[[=Y=]]', 'ay', 'Lb'); - test_regex ------------------ - {0,REG_ULOCALE} -(1 row) - --- expectError 9.10 & {a[0-[=x=]]} ERANGE -select * from test_regex('a[0-[=x=]]', '', ''); -ERROR: invalid regular expression: invalid character range -select * from test_regex('a[0-[=x=]]', '', 'b'); -ERROR: invalid regular expression: invalid character range --- expectMatch 9.11 &L {a[[:digit:]]} a0 a0 -select * from test_regex('a[[:digit:]]', 'a0', 'L'); - test_regex ------------------ - {0,REG_ULOCALE} - {a0} -(2 rows) - -select * from test_regex('a[[:digit:]]', 'a0', 'Lb'); - test_regex ------------------ - {0,REG_ULOCALE} - {a0} -(2 rows) - --- expectError 9.12 & {a[[:woopsie:]]} ECTYPE -select * from test_regex('a[[:woopsie:]]', '', ''); -ERROR: invalid regular expression: invalid character class -select * from test_regex('a[[:woopsie:]]', '', 'b'); -ERROR: invalid regular expression: invalid character class --- expectNomatch 9.13 &L {a[[:digit:]]} ab -select * from test_regex('a[[:digit:]]', 'ab', 'L'); - test_regex ------------------ - {0,REG_ULOCALE} -(1 row) - -select * from test_regex('a[[:digit:]]', 'ab', 'Lb'); - test_regex ------------------ - {0,REG_ULOCALE} -(1 row) - --- expectError 9.14 & {a[0-[:digit:]]} ERANGE -select * from test_regex('a[0-[:digit:]]', '', ''); -ERROR: invalid regular expression: invalid character range -select * from test_regex('a[0-[:digit:]]', '', 'b'); -ERROR: invalid regular expression: invalid character range --- expectMatch 9.15 &LP {[[:<:]]a} a a -select * from test_regex('[[:<:]]a', 'a', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {a} -(2 rows) - -select * from test_regex('[[:<:]]a', 'a', 'LPb'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {a} -(2 rows) - --- expectMatch 9.16 &LP {a[[:>:]]} a a -select * from test_regex('a[[:>:]]', 'a', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {a} -(2 rows) - -select * from test_regex('a[[:>:]]', 'a', 'LPb'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {a} -(2 rows) - --- expectError 9.17 & {a[[..]]b} ECOLLATE -select * from test_regex('a[[..]]b', '', ''); -ERROR: invalid regular expression: invalid collating element -select * from test_regex('a[[..]]b', '', 'b'); -ERROR: invalid regular expression: invalid collating element --- expectError 9.18 & {a[[==]]b} ECOLLATE -select * from test_regex('a[[==]]b', '', ''); -ERROR: invalid regular expression: invalid collating element -select * from test_regex('a[[==]]b', '', 'b'); -ERROR: invalid regular expression: invalid collating element --- expectError 9.19 & {a[[::]]b} ECTYPE -select * from test_regex('a[[::]]b', '', ''); -ERROR: invalid regular expression: invalid character class -select * from test_regex('a[[::]]b', '', 'b'); -ERROR: invalid regular expression: invalid character class --- expectError 9.20 & {a[[.a} EBRACK -select * from test_regex('a[[.a', '', ''); -ERROR: invalid regular expression: brackets [] not balanced -select * from test_regex('a[[.a', '', 'b'); -ERROR: invalid regular expression: brackets [] not balanced --- expectError 9.21 & {a[[=a} EBRACK -select * from test_regex('a[[=a', '', ''); -ERROR: invalid regular expression: brackets [] not balanced -select * from test_regex('a[[=a', '', 'b'); -ERROR: invalid regular expression: brackets [] not balanced --- expectError 9.22 & {a[[:a} EBRACK -select * from test_regex('a[[:a', '', ''); -ERROR: invalid regular expression: brackets [] not balanced -select * from test_regex('a[[:a', '', 'b'); -ERROR: invalid regular expression: brackets [] not balanced --- expectError 9.23 & {a[} EBRACK -select * from test_regex('a[', '', ''); -ERROR: invalid regular expression: brackets [] not balanced -select * from test_regex('a[', '', 'b'); -ERROR: invalid regular expression: brackets [] not balanced --- expectError 9.24 & {a[b} EBRACK -select * from test_regex('a[b', '', ''); -ERROR: invalid regular expression: brackets [] not balanced -select * from test_regex('a[b', '', 'b'); -ERROR: invalid regular expression: brackets [] not balanced --- expectError 9.25 & {a[b-} EBRACK -select * from test_regex('a[b-', '', ''); -ERROR: invalid regular expression: brackets [] not balanced -select * from test_regex('a[b-', '', 'b'); -ERROR: invalid regular expression: brackets [] not balanced --- expectError 9.26 & {a[b-c} EBRACK -select * from test_regex('a[b-c', '', ''); -ERROR: invalid regular expression: brackets [] not balanced -select * from test_regex('a[b-c', '', 'b'); -ERROR: invalid regular expression: brackets [] not balanced --- expectMatch 9.27 &M {a[b-c]} ab ab -select * from test_regex('a[b-c]', 'ab', 'M'); - test_regex ------------------ - {0,REG_UUNPORT} - {ab} -(2 rows) - -select * from test_regex('a[b-c]', 'ab', 'Mb'); - test_regex ------------------ - {0,REG_UUNPORT} - {ab} -(2 rows) - --- expectMatch 9.28 & {a[b-b]} ab ab -select * from test_regex('a[b-b]', 'ab', ''); - test_regex ------------- - {0} - {ab} -(2 rows) - -select * from test_regex('a[b-b]', 'ab', 'b'); - test_regex ------------- - {0} - {ab} -(2 rows) - --- expectMatch 9.29 &M {a[1-2]} a2 a2 -select * from test_regex('a[1-2]', 'a2', 'M'); - test_regex ------------------ - {0,REG_UUNPORT} - {a2} -(2 rows) - -select * from test_regex('a[1-2]', 'a2', 'Mb'); - test_regex ------------------ - {0,REG_UUNPORT} - {a2} -(2 rows) - --- expectError 9.30 & {a[c-b]} ERANGE -select * from test_regex('a[c-b]', '', ''); -ERROR: invalid regular expression: invalid character range -select * from test_regex('a[c-b]', '', 'b'); -ERROR: invalid regular expression: invalid character range --- expectError 9.31 & {a[a-b-c]} ERANGE -select * from test_regex('a[a-b-c]', '', ''); -ERROR: invalid regular expression: invalid character range -select * from test_regex('a[a-b-c]', '', 'b'); -ERROR: invalid regular expression: invalid character range --- expectMatch 9.32 &M {a[--?]b} a?b a?b -select * from test_regex('a[--?]b', 'a?b', 'M'); - test_regex ------------------ - {0,REG_UUNPORT} - {a?b} -(2 rows) - -select * from test_regex('a[--?]b', 'a?b', 'Mb'); - test_regex ------------------ - {0,REG_UUNPORT} - {a?b} -(2 rows) - --- expectMatch 9.33 & {a[---]b} a-b a-b -select * from test_regex('a[---]b', 'a-b', ''); - test_regex ------------- - {0} - {a-b} -(2 rows) - -select * from test_regex('a[---]b', 'a-b', 'b'); - test_regex ------------- - {0} - {a-b} -(2 rows) - --- expectMatch 9.34 & {a[]b]c} a]c a]c -select * from test_regex('a[]b]c', 'a]c', ''); - test_regex ------------- - {0} - {a]c} -(2 rows) - -select * from test_regex('a[]b]c', 'a]c', 'b'); - test_regex ------------- - {0} - {a]c} -(2 rows) - --- expectMatch 9.35 EP {a[\]]b} a]b a]b -select * from test_regex('a[\]]b', 'a]b', 'EP'); - test_regex ----------------------------- - {0,REG_UBBS,REG_UNONPOSIX} - {a]b} -(2 rows) - --- expectNomatch 9.36 bE {a[\]]b} a]b -select * from test_regex('a[\]]b', 'a]b', 'bE'); - test_regex --------------- - {0,REG_UBBS} -(1 row) - --- expectMatch 9.37 bE {a[\]]b} "a\\]b" "a\\]b" -select * from test_regex('a[\]]b', 'a\]b', 'bE'); - test_regex --------------- - {0,REG_UBBS} - {"a\\]b"} -(2 rows) - --- expectMatch 9.38 eE {a[\]]b} "a\\]b" "a\\]b" -select * from test_regex('a[\]]b', 'a\]b', 'eE'); - test_regex --------------- - {0,REG_UBBS} - {"a\\]b"} -(2 rows) - --- expectMatch 9.39 EP {a[\\]b} "a\\b" "a\\b" -select * from test_regex('a[\\]b', 'a\b', 'EP'); - test_regex ----------------------------- - {0,REG_UBBS,REG_UNONPOSIX} - {"a\\b"} -(2 rows) - --- expectMatch 9.40 eE {a[\\]b} "a\\b" "a\\b" -select * from test_regex('a[\\]b', 'a\b', 'eE'); - test_regex --------------- - {0,REG_UBBS} - {"a\\b"} -(2 rows) - --- expectMatch 9.41 bE {a[\\]b} "a\\b" "a\\b" -select * from test_regex('a[\\]b', 'a\b', 'bE'); - test_regex --------------- - {0,REG_UBBS} - {"a\\b"} -(2 rows) - --- expectError 9.42 - {a[\Z]b} EESCAPE -select * from test_regex('a[\Z]b', '', '-'); -ERROR: invalid regular expression: invalid escape \ sequence --- expectMatch 9.43 & {a[[b]c} "a\[c" "a\[c" -select * from test_regex('a[[b]c', 'a[c', ''); - test_regex ------------- - {0} - {a[c} -(2 rows) - -select * from test_regex('a[[b]c', 'a[c', 'b'); - test_regex ------------- - {0} - {a[c} -(2 rows) - --- This only works in UTF8 encoding, so it's moved to test_regex_utf8.sql: --- expectMatch 9.44 EMP* {a[\u00fe-\u0507][\u00ff-\u0300]b} \ --- "a\u0102\u02ffb" "a\u0102\u02ffb" --- doing 10 "anchors and newlines" --- expectMatch 10.1 & ^a a a -select * from test_regex('^a', 'a', ''); - test_regex ------------- - {0} - {a} -(2 rows) - -select * from test_regex('^a', 'a', 'b'); - test_regex ------------- - {0} - {a} -(2 rows) - --- expectNomatch 10.2 &^ ^a a -select * from test_regex('^a', 'a', '^'); - test_regex ------------- - {0} -(1 row) - -select * from test_regex('^a', 'a', '^b'); - test_regex ------------- - {0} -(1 row) - --- expectIndices 10.3 &N ^ a {0 -1} -select * from test_regex('^', 'a', '0N'); - test_regex ---------------------- - {0,REG_UEMPTYMATCH} - {"0 -1"} -(2 rows) - -select * from test_regex('^', 'a', '0Nb'); - test_regex ---------------------- - {0,REG_UEMPTYMATCH} - {"0 -1"} -(2 rows) - --- expectIndices 10.4 & {a$} aba {2 2} -select * from test_regex('a$', 'aba', '0'); - test_regex ------------- - {0} - {"2 2"} -(2 rows) - -select * from test_regex('a$', 'aba', '0b'); - test_regex ------------- - {0} - {"2 2"} -(2 rows) - --- expectNomatch 10.5 {&$} {a$} a -select * from test_regex('a$', 'a', '$'); - test_regex ------------- - {0} -(1 row) - -select * from test_regex('a$', 'a', '$b'); - test_regex ------------- - {0} -(1 row) - --- expectIndices 10.6 &N {$} ab {2 1} -select * from test_regex('$', 'ab', '0N'); - test_regex ---------------------- - {0,REG_UEMPTYMATCH} - {"2 1"} -(2 rows) - -select * from test_regex('$', 'ab', '0Nb'); - test_regex ---------------------- - {0,REG_UEMPTYMATCH} - {"2 1"} -(2 rows) - --- expectMatch 10.7 &n ^a a a -select * from test_regex('^a', 'a', 'n'); - test_regex ------------- - {0} - {a} -(2 rows) - -select * from test_regex('^a', 'a', 'nb'); - test_regex ------------- - {0} - {a} -(2 rows) - --- expectMatch 10.8 &n "^a" "b\na" "a" -select * from test_regex('^a', E'b\na', 'n'); - test_regex ------------- - {0} - {a} -(2 rows) - -select * from test_regex('^a', E'b\na', 'nb'); - test_regex ------------- - {0} - {a} -(2 rows) - --- expectIndices 10.9 &w "^a" "a\na" {0 0} -select * from test_regex('^a', E'a\na', '0w'); - test_regex ------------- - {0} - {"0 0"} -(2 rows) - -select * from test_regex('^a', E'a\na', '0wb'); - test_regex ------------- - {0} - {"0 0"} -(2 rows) - --- expectIndices 10.10 &n^ "^a" "a\na" {2 2} -select * from test_regex('^a', E'a\na', '0n^'); - test_regex ------------- - {0} - {"2 2"} -(2 rows) - -select * from test_regex('^a', E'a\na', '0n^b'); - test_regex ------------- - {0} - {"2 2"} -(2 rows) - --- expectMatch 10.11 &n {a$} a a -select * from test_regex('a$', 'a', 'n'); - test_regex ------------- - {0} - {a} -(2 rows) - -select * from test_regex('a$', 'a', 'nb'); - test_regex ------------- - {0} - {a} -(2 rows) - --- expectMatch 10.12 &n "a\$" "a\nb" "a" -select * from test_regex('a$', E'a\nb', 'n'); - test_regex ------------- - {0} - {a} -(2 rows) - -select * from test_regex('a$', E'a\nb', 'nb'); - test_regex ------------- - {0} - {a} -(2 rows) - --- expectIndices 10.13 &n "a\$" "a\na" {0 0} -select * from test_regex('a$', E'a\na', '0n'); - test_regex ------------- - {0} - {"0 0"} -(2 rows) - -select * from test_regex('a$', E'a\na', '0nb'); - test_regex ------------- - {0} - {"0 0"} -(2 rows) - --- expectIndices 10.14 N ^^ a {0 -1} -select * from test_regex('^^', 'a', '0N'); - test_regex ---------------------- - {0,REG_UEMPTYMATCH} - {"0 -1"} -(2 rows) - --- expectMatch 10.15 b ^^ ^ ^ -select * from test_regex('^^', '^', 'b'); - test_regex ------------- - {0} - {^} -(2 rows) - --- expectIndices 10.16 N {$$} a {1 0} -select * from test_regex('$$', 'a', '0N'); - test_regex ---------------------- - {0,REG_UEMPTYMATCH} - {"1 0"} -(2 rows) - --- expectMatch 10.17 b {$$} "\$" "\$" -select * from test_regex('$$', '$', 'b'); - test_regex ------------- - {0} - {$} -(2 rows) - --- expectMatch 10.18 &N {^$} "" "" -select * from test_regex('^$', '', 'N'); - test_regex ---------------------- - {0,REG_UEMPTYMATCH} - {""} -(2 rows) - -select * from test_regex('^$', '', 'Nb'); - test_regex ---------------------- - {0,REG_UEMPTYMATCH} - {""} -(2 rows) - --- expectNomatch 10.19 &N {^$} a -select * from test_regex('^$', 'a', 'N'); - test_regex ---------------------- - {0,REG_UEMPTYMATCH} -(1 row) - -select * from test_regex('^$', 'a', 'Nb'); - test_regex ---------------------- - {0,REG_UEMPTYMATCH} -(1 row) - --- expectIndices 10.20 &nN "^\$" a\n\nb {2 1} -select * from test_regex('^$', E'a\n\nb', '0nN'); - test_regex ---------------------- - {0,REG_UEMPTYMATCH} - {"2 1"} -(2 rows) - -select * from test_regex('^$', E'a\n\nb', '0nNb'); - test_regex ---------------------- - {0,REG_UEMPTYMATCH} - {"2 1"} -(2 rows) - --- expectMatch 10.21 N {$^} "" "" -select * from test_regex('$^', '', 'N'); - test_regex ---------------------- - {0,REG_UEMPTYMATCH} - {""} -(2 rows) - --- expectMatch 10.22 b {$^} "\$^" "\$^" -select * from test_regex('$^', '$^', 'b'); - test_regex ------------- - {0} - {$^} -(2 rows) - --- expectMatch 10.23 P {\Aa} a a -select * from test_regex('\Aa', 'a', 'P'); - test_regex -------------------- - {0,REG_UNONPOSIX} - {a} -(2 rows) - --- expectMatch 10.24 ^P {\Aa} a a -select * from test_regex('\Aa', 'a', '^P'); - test_regex -------------------- - {0,REG_UNONPOSIX} - {a} -(2 rows) - --- expectNomatch 10.25 ^nP {\Aa} "b\na" -select * from test_regex('\Aa', E'b\na', '^nP'); - test_regex -------------------- - {0,REG_UNONPOSIX} -(1 row) - --- expectMatch 10.26 P {a\Z} a a -select * from test_regex('a\Z', 'a', 'P'); - test_regex -------------------- - {0,REG_UNONPOSIX} - {a} -(2 rows) - --- expectMatch 10.27 \$P {a\Z} a a -select * from test_regex('a\Z', 'a', '$P'); - test_regex -------------------- - {0,REG_UNONPOSIX} - {a} -(2 rows) - --- expectNomatch 10.28 \$nP {a\Z} "a\nb" -select * from test_regex('a\Z', E'a\nb', '$nP'); - test_regex -------------------- - {0,REG_UNONPOSIX} -(1 row) - --- expectError 10.29 - ^* BADRPT -select * from test_regex('^*', '', '-'); -ERROR: invalid regular expression: quantifier operand invalid --- expectError 10.30 - {$*} BADRPT -select * from test_regex('$*', '', '-'); -ERROR: invalid regular expression: quantifier operand invalid --- expectError 10.31 - {\A*} BADRPT -select * from test_regex('\A*', '', '-'); -ERROR: invalid regular expression: quantifier operand invalid --- expectError 10.32 - {\Z*} BADRPT -select * from test_regex('\Z*', '', '-'); -ERROR: invalid regular expression: quantifier operand invalid --- doing 11 "boundary constraints" --- expectMatch 11.1 &LP {[[:<:]]a} a a -select * from test_regex('[[:<:]]a', 'a', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {a} -(2 rows) - -select * from test_regex('[[:<:]]a', 'a', 'LPb'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {a} -(2 rows) - --- expectMatch 11.2 &LP {[[:<:]]a} -a a -select * from test_regex('[[:<:]]a', '-a', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {a} -(2 rows) - -select * from test_regex('[[:<:]]a', '-a', 'LPb'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {a} -(2 rows) - --- expectNomatch 11.3 &LP {[[:<:]]a} ba -select * from test_regex('[[:<:]]a', 'ba', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} -(1 row) - -select * from test_regex('[[:<:]]a', 'ba', 'LPb'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} -(1 row) - --- expectMatch 11.4 &LP {a[[:>:]]} a a -select * from test_regex('a[[:>:]]', 'a', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {a} -(2 rows) - -select * from test_regex('a[[:>:]]', 'a', 'LPb'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {a} -(2 rows) - --- expectMatch 11.5 &LP {a[[:>:]]} a- a -select * from test_regex('a[[:>:]]', 'a-', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {a} -(2 rows) - -select * from test_regex('a[[:>:]]', 'a-', 'LPb'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {a} -(2 rows) - --- expectNomatch 11.6 &LP {a[[:>:]]} ab -select * from test_regex('a[[:>:]]', 'ab', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} -(1 row) - -select * from test_regex('a[[:>:]]', 'ab', 'LPb'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} -(1 row) - --- expectMatch 11.7 bLP {\} a a -select * from test_regex('a\>', 'a', 'bLP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {a} -(2 rows) - --- expectNomatch 11.10 bLP {a\>} ab -select * from test_regex('a\>', 'ab', 'bLP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} -(1 row) - --- expectMatch 11.11 LP {\ya} a a -select * from test_regex('\ya', 'a', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {a} -(2 rows) - --- expectNomatch 11.12 LP {\ya} ba -select * from test_regex('\ya', 'ba', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} -(1 row) - --- expectMatch 11.13 LP {a\y} a a -select * from test_regex('a\y', 'a', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {a} -(2 rows) - --- expectNomatch 11.14 LP {a\y} ab -select * from test_regex('a\y', 'ab', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} -(1 row) - --- expectMatch 11.15 LP {a\Y} ab a -select * from test_regex('a\Y', 'ab', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {a} -(2 rows) - --- expectNomatch 11.16 LP {a\Y} a- -select * from test_regex('a\Y', 'a-', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} -(1 row) - --- expectNomatch 11.17 LP {a\Y} a -select * from test_regex('a\Y', 'a', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} -(1 row) - --- expectNomatch 11.18 LP {-\Y} -a -select * from test_regex('-\Y', '-a', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} -(1 row) - --- expectMatch 11.19 LP {-\Y} -% - -select * from test_regex('-\Y', '-%', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {-} -(2 rows) - --- expectNomatch 11.20 LP {\Y-} a- -select * from test_regex('\Y-', 'a-', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} -(1 row) - --- expectError 11.21 - {[[:<:]]*} BADRPT -select * from test_regex('[[:<:]]*', '', '-'); -ERROR: invalid regular expression: quantifier operand invalid --- expectError 11.22 - {[[:>:]]*} BADRPT -select * from test_regex('[[:>:]]*', '', '-'); -ERROR: invalid regular expression: quantifier operand invalid --- expectError 11.23 b {\<*} BADRPT -select * from test_regex('\<*', '', 'b'); -ERROR: invalid regular expression: quantifier operand invalid --- expectError 11.24 b {\>*} BADRPT -select * from test_regex('\>*', '', 'b'); -ERROR: invalid regular expression: quantifier operand invalid --- expectError 11.25 - {\y*} BADRPT -select * from test_regex('\y*', '', '-'); -ERROR: invalid regular expression: quantifier operand invalid --- expectError 11.26 - {\Y*} BADRPT -select * from test_regex('\Y*', '', '-'); -ERROR: invalid regular expression: quantifier operand invalid --- expectMatch 11.27 LP {\ma} a a -select * from test_regex('\ma', 'a', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {a} -(2 rows) - --- expectNomatch 11.28 LP {\ma} ba -select * from test_regex('\ma', 'ba', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} -(1 row) - --- expectMatch 11.29 LP {a\M} a a -select * from test_regex('a\M', 'a', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {a} -(2 rows) - --- expectNomatch 11.30 LP {a\M} ab -select * from test_regex('a\M', 'ab', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} -(1 row) - --- expectNomatch 11.31 ILP {\Ma} a -select * from test_regex('\Ma', 'a', 'ILP'); - test_regex ------------------------------------------------ - {0,REG_UNONPOSIX,REG_ULOCALE,REG_UIMPOSSIBLE} -(1 row) - --- expectNomatch 11.32 ILP {a\m} a -select * from test_regex('a\m', 'a', 'ILP'); - test_regex ------------------------------------------------ - {0,REG_UNONPOSIX,REG_ULOCALE,REG_UIMPOSSIBLE} -(1 row) - --- doing 12 "character classes" --- expectMatch 12.1 LP {a\db} a0b a0b -select * from test_regex('a\db', 'a0b', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {a0b} -(2 rows) - --- expectNomatch 12.2 LP {a\db} axb -select * from test_regex('a\db', 'axb', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} -(1 row) - --- expectNomatch 12.3 LP {a\Db} a0b -select * from test_regex('a\Db', 'a0b', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} -(1 row) - --- expectMatch 12.4 LP {a\Db} axb axb -select * from test_regex('a\Db', 'axb', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {axb} -(2 rows) - --- expectMatch 12.5 LP "a\\sb" "a b" "a b" -select * from test_regex('a\sb', 'a b', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {"a b"} -(2 rows) - --- expectMatch 12.6 LP "a\\sb" "a\tb" "a\tb" -select * from test_regex('a\sb', E'a\tb', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {"a b"} -(2 rows) - --- expectMatch 12.7 LP "a\\sb" "a\nb" "a\nb" -select * from test_regex('a\sb', E'a\nb', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {"a + - b"} -(2 rows) - --- expectNomatch 12.8 LP {a\sb} axb -select * from test_regex('a\sb', 'axb', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} -(1 row) - --- expectMatch 12.9 LP {a\Sb} axb axb -select * from test_regex('a\Sb', 'axb', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {axb} -(2 rows) - --- expectNomatch 12.10 LP "a\\Sb" "a b" -select * from test_regex('a\Sb', 'a b', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} -(1 row) - --- expectMatch 12.11 LP {a\wb} axb axb -select * from test_regex('a\wb', 'axb', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {axb} -(2 rows) - --- expectNomatch 12.12 LP {a\wb} a-b -select * from test_regex('a\wb', 'a-b', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} -(1 row) - --- expectNomatch 12.13 LP {a\Wb} axb -select * from test_regex('a\Wb', 'axb', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} -(1 row) - --- expectMatch 12.14 LP {a\Wb} a-b a-b -select * from test_regex('a\Wb', 'a-b', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {a-b} -(2 rows) - --- expectMatch 12.15 LP {\y\w+z\y} adze-guz guz -select * from test_regex('\y\w+z\y', 'adze-guz', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {guz} -(2 rows) - --- expectMatch 12.16 LPE {a[\d]b} a1b a1b -select * from test_regex('a[\d]b', 'a1b', 'LPE'); - test_regex ----------------------------------------- - {0,REG_UBBS,REG_UNONPOSIX,REG_ULOCALE} - {a1b} -(2 rows) - --- expectMatch 12.17 LPE "a\[\\s]b" "a b" "a b" -select * from test_regex('a[\s]b', 'a b', 'LPE'); - test_regex ----------------------------------------- - {0,REG_UBBS,REG_UNONPOSIX,REG_ULOCALE} - {"a b"} -(2 rows) - --- expectMatch 12.18 LPE {a[\w]b} axb axb -select * from test_regex('a[\w]b', 'axb', 'LPE'); - test_regex ----------------------------------------- - {0,REG_UBBS,REG_UNONPOSIX,REG_ULOCALE} - {axb} -(2 rows) - --- these should be invalid -select * from test_regex('[\w-~]*', 'ab01_~-`**', 'LNPSE'); -ERROR: invalid regular expression: invalid character range -select * from test_regex('[~-\w]*', 'ab01_~-`**', 'LNPSE'); -ERROR: invalid regular expression: invalid character range -select * from test_regex('[[:alnum:]-~]*', 'ab01~-`**', 'LNS'); -ERROR: invalid regular expression: invalid character range -select * from test_regex('[~-[:alnum:]]*', 'ab01~-`**', 'LNS'); -ERROR: invalid regular expression: invalid character range --- test complemented char classes within brackets -select * from test_regex('[\D]', '0123456789abc*', 'LPE'); - test_regex ----------------------------------------- - {0,REG_UBBS,REG_UNONPOSIX,REG_ULOCALE} - {a} -(2 rows) - -select * from test_regex('[^\D]', 'abc0123456789*', 'LPE'); - test_regex ----------------------------------------- - {0,REG_UBBS,REG_UNONPOSIX,REG_ULOCALE} - {0} -(2 rows) - -select * from test_regex('[1\D7]', '0123456789abc*', 'LPE'); - test_regex ----------------------------------------- - {0,REG_UBBS,REG_UNONPOSIX,REG_ULOCALE} - {1} -(2 rows) - -select * from test_regex('[7\D1]', '0123456789abc*', 'LPE'); - test_regex ----------------------------------------- - {0,REG_UBBS,REG_UNONPOSIX,REG_ULOCALE} - {1} -(2 rows) - -select * from test_regex('[^0\D1]', 'abc0123456789*', 'LPE'); - test_regex ----------------------------------------- - {0,REG_UBBS,REG_UNONPOSIX,REG_ULOCALE} - {2} -(2 rows) - -select * from test_regex('[^1\D0]', 'abc0123456789*', 'LPE'); - test_regex ----------------------------------------- - {0,REG_UBBS,REG_UNONPOSIX,REG_ULOCALE} - {2} -(2 rows) - -select * from test_regex('\W', '0123456789abc_*', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {*} -(2 rows) - -select * from test_regex('[\W]', '0123456789abc_*', 'LPE'); - test_regex ----------------------------------------- - {0,REG_UBBS,REG_UNONPOSIX,REG_ULOCALE} - {*} -(2 rows) - -select * from test_regex('[\s\S]*', '012 3456789abc_*', 'LNPE'); - test_regex --------------------------------------------------------- - {0,REG_UBBS,REG_UNONPOSIX,REG_ULOCALE,REG_UEMPTYMATCH} - {"012 3456789abc_*"} -(2 rows) - --- check char classes' handling of newlines -select * from test_regex('\s+', E'abc \n def', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {" + - "} -(2 rows) - -select * from test_regex('\s+', E'abc \n def', 'nLP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {" + - "} -(2 rows) - -select * from test_regex('[\s]+', E'abc \n def', 'LPE'); - test_regex ----------------------------------------- - {0,REG_UBBS,REG_UNONPOSIX,REG_ULOCALE} - {" + - "} -(2 rows) - -select * from test_regex('[\s]+', E'abc \n def', 'nLPE'); - test_regex ----------------------------------------- - {0,REG_UBBS,REG_UNONPOSIX,REG_ULOCALE} - {" + - "} -(2 rows) - -select * from test_regex('\S+', E'abc\ndef', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {abc} -(2 rows) - -select * from test_regex('\S+', E'abc\ndef', 'nLP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {abc} -(2 rows) - -select * from test_regex('[\S]+', E'abc\ndef', 'LPE'); - test_regex ----------------------------------------- - {0,REG_UBBS,REG_UNONPOSIX,REG_ULOCALE} - {abc} -(2 rows) - -select * from test_regex('[\S]+', E'abc\ndef', 'nLPE'); - test_regex ----------------------------------------- - {0,REG_UBBS,REG_UNONPOSIX,REG_ULOCALE} - {abc} -(2 rows) - -select * from test_regex('\d+', E'012\n345', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {012} -(2 rows) - -select * from test_regex('\d+', E'012\n345', 'nLP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {012} -(2 rows) - -select * from test_regex('[\d]+', E'012\n345', 'LPE'); - test_regex ----------------------------------------- - {0,REG_UBBS,REG_UNONPOSIX,REG_ULOCALE} - {012} -(2 rows) - -select * from test_regex('[\d]+', E'012\n345', 'nLPE'); - test_regex ----------------------------------------- - {0,REG_UBBS,REG_UNONPOSIX,REG_ULOCALE} - {012} -(2 rows) - -select * from test_regex('\D+', E'abc\ndef345', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {"abc + - def"} -(2 rows) - -select * from test_regex('\D+', E'abc\ndef345', 'nLP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {"abc + - def"} -(2 rows) - -select * from test_regex('[\D]+', E'abc\ndef345', 'LPE'); - test_regex ----------------------------------------- - {0,REG_UBBS,REG_UNONPOSIX,REG_ULOCALE} - {"abc + - def"} -(2 rows) - -select * from test_regex('[\D]+', E'abc\ndef345', 'nLPE'); - test_regex ----------------------------------------- - {0,REG_UBBS,REG_UNONPOSIX,REG_ULOCALE} - {"abc + - def"} -(2 rows) - -select * from test_regex('\w+', E'abc_012\ndef', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {abc_012} -(2 rows) - -select * from test_regex('\w+', E'abc_012\ndef', 'nLP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {abc_012} -(2 rows) - -select * from test_regex('[\w]+', E'abc_012\ndef', 'LPE'); - test_regex ----------------------------------------- - {0,REG_UBBS,REG_UNONPOSIX,REG_ULOCALE} - {abc_012} -(2 rows) - -select * from test_regex('[\w]+', E'abc_012\ndef', 'nLPE'); - test_regex ----------------------------------------- - {0,REG_UBBS,REG_UNONPOSIX,REG_ULOCALE} - {abc_012} -(2 rows) - -select * from test_regex('\W+', E'***\n@@@___', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {"*** + - @@@"} -(2 rows) - -select * from test_regex('\W+', E'***\n@@@___', 'nLP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {"*** + - @@@"} -(2 rows) - -select * from test_regex('[\W]+', E'***\n@@@___', 'LPE'); - test_regex ----------------------------------------- - {0,REG_UBBS,REG_UNONPOSIX,REG_ULOCALE} - {"*** + - @@@"} -(2 rows) - -select * from test_regex('[\W]+', E'***\n@@@___', 'nLPE'); - test_regex ----------------------------------------- - {0,REG_UBBS,REG_UNONPOSIX,REG_ULOCALE} - {"*** + - @@@"} -(2 rows) - --- doing 13 "escapes" --- expectError 13.1 & "a\\" EESCAPE -select * from test_regex('a\', '', ''); -ERROR: invalid regular expression: invalid escape \ sequence -select * from test_regex('a\', '', 'b'); -ERROR: invalid regular expression: invalid escape \ sequence --- expectMatch 13.2 - {a\]+)>} a --- } 1 -select * from test_regex('\A\s*[^<]*\s*<([^>]+)>', 'a', 'LP'); - test_regex -------------------------------- - {1,REG_UNONPOSIX,REG_ULOCALE} - {a,a} -(2 rows) - --- test reg-33.4 {Bug 505048} { --- regexp {\A\s*([^b]*)b} ab --- } 1 -select * from test_regex('\A\s*([^b]*)b', 'ab', 'LP'); - test_regex -------------------------------- - {1,REG_UNONPOSIX,REG_ULOCALE} - {ab,a} -(2 rows) - --- test reg-33.5 {Bug 505048} { --- regexp {\A\s*[^b]*(b)} ab --- } 1 -select * from test_regex('\A\s*[^b]*(b)', 'ab', 'LP'); - test_regex -------------------------------- - {1,REG_UNONPOSIX,REG_ULOCALE} - {ab,b} -(2 rows) - --- test reg-33.6 {Bug 505048} { --- regexp {\A(\s*)[^b]*(b)} ab --- } 1 -select * from test_regex('\A(\s*)[^b]*(b)', 'ab', 'LP'); - test_regex -------------------------------- - {2,REG_UNONPOSIX,REG_ULOCALE} - {ab,"",b} -(2 rows) - --- test reg-33.7 {Bug 505048} { --- regexp {\A\s*[^b]*b} ab --- } 1 -select * from test_regex('\A\s*[^b]*b', 'ab', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {ab} -(2 rows) - --- test reg-33.8 {Bug 505048} { --- regexp -inline {\A\s*[^b]*b} ab --- } ab -select * from test_regex('\A\s*[^b]*b', 'ab', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {ab} -(2 rows) - --- test reg-33.9 {Bug 505048} { --- regexp -indices -inline {\A\s*[^b]*b} ab --- } {{0 1}} -select * from test_regex('\A\s*[^b]*b', 'ab', '0LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {"0 1"} -(2 rows) - --- test reg-33.10 {Bug 840258} -body { --- regsub {(^|\n)+\.*b} \n.b {} tmp --- } -cleanup { --- unset tmp --- } -result 1 -select * from test_regex('(^|\n)+\.*b', E'\n.b', 'P'); - test_regex -------------------- - {1,REG_UNONPOSIX} - {" + - .b"," + - "} -(2 rows) - --- test reg-33.11 {Bug 840258} -body { --- regsub {(^|[\n\r]+)\.*\?<.*?(\n|\r)+} \ --- "TQ\r\n.?<5000267>Test already stopped\r\n" {} tmp --- } -cleanup { --- unset tmp --- } -result 1 -select * from test_regex('(^|[\n\r]+)\.*\?<.*?(\n|\r)+', E'TQ\r\n.?<5000267>Test already stopped\r\n', 'EP'); - test_regex ------------------------------------ - {2,REG_UBBS,REG_UNONPOSIX} - {"\r + - .?<5000267>Test already stopped\r+ - ","\r + - "," + - "} -(2 rows) - --- test reg-33.12 {Bug 1810264 - bad read} { --- regexp {\3161573148} {\3161573148} --- } 0 -select * from test_regex('\3161573148', '\3161573148', 'MP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_UUNPORT} -(1 row) - --- test reg-33.13 {Bug 1810264 - infinite loop} { --- regexp {($|^)*} {x} --- } 1 -select * from test_regex('($|^)*', 'x', 'N'); - test_regex ---------------------- - {1,REG_UEMPTYMATCH} - {"",""} -(2 rows) - --- # Some environments have small default stack sizes. [Bug 1905562] --- test reg-33.14 {Bug 1810264 - super-expensive expression} nonPortable { --- regexp {(x{200}){200}$y} {x} --- } 0 --- This might or might not work depending on platform, so skip it --- select * from test_regex('(x{200}){200}$y', 'x', 'IQ'); --- test reg-33.15.1 {Bug 3603557 - an "in the wild" RE} { --- lindex [regexp -expanded -about { --- ^TETRA_MODE_CMD # Message Type --- ([[:blank:]]+) # Pad --- (ETS_1_1|ETS_1_2|ETS_2_2) # SystemCode --- ([[:blank:]]+) # Pad --- (CONTINUOUS|CARRIER|MCCH|TRAFFIC) # SharingMode --- ([[:blank:]]+) # Pad --- ([[:digit:]]{1,2}) # ColourCode --- ([[:blank:]]+) # Pad --- (1|2|3|4|6|9|12|18) # TSReservedFrames --- ([[:blank:]]+) # Pad --- (PASS|TRUE|FAIL|FALSE) # UPlaneDTX --- ([[:blank:]]+) # Pad --- (PASS|TRUE|FAIL|FALSE) # Frame18Extension --- ([[:blank:]]+) # Pad --- ([[:digit:]]{1,4}) # MCC --- ([[:blank:]]+) # Pad --- ([[:digit:]]{1,5}) # MNC --- ([[:blank:]]+) # Pad --- (BOTH|BCAST|ENQRY|NONE) # NbrCellBcast --- ([[:blank:]]+) # Pad --- (UNKNOWN|LOW|MEDIUM|HIGH) # CellServiceLevel --- ([[:blank:]]+) # Pad --- (PASS|TRUE|FAIL|FALSE) # LateEntryInfo --- ([[:blank:]]+) # Pad --- (300|400) # FrequencyBand --- ([[:blank:]]+) # Pad --- (NORMAL|REVERSE) # ReverseOperation --- ([[:blank:]]+) # Pad --- (NONE|\+6\.25|\-6\.25|\+12\.5) # Offset --- ([[:blank:]]+) # Pad --- (10) # DuplexSpacing --- ([[:blank:]]+) # Pad --- ([[:digit:]]{1,4}) # MainCarrierNr --- ([[:blank:]]+) # Pad --- (0|1|2|3) # NrCSCCH --- ([[:blank:]]+) # Pad --- (15|20|25|30|35|40|45) # MSTxPwrMax --- ([[:blank:]]+) # Pad --- (\-125|\-120|\-115|\-110|\-105|\-100|\-95|\-90|\-85|\-80|\-75|\-70|\-65|\-60|\-55|\-50) --- # RxLevAccessMin --- ([[:blank:]]+) # Pad --- (\-53|\-51|\-49|\-47|\-45|\-43|\-41|\-39|\-37|\-35|\-33|\-31|\-29|\-27|\-25|\-23) --- # AccessParameter --- ([[:blank:]]+) # Pad --- (DISABLE|[[:digit:]]{3,4}) # RadioDLTimeout --- ([[:blank:]]+) # Pad --- (\-[[:digit:]]{2,3}) # RSSIThreshold --- ([[:blank:]]+) # Pad --- ([[:digit:]]{1,5}) # CCKIdSCKVerNr --- ([[:blank:]]+) # Pad --- ([[:digit:]]{1,5}) # LocationArea --- ([[:blank:]]+) # Pad --- ([(1|0)]{16}) # SubscriberClass --- ([[:blank:]]+) # Pad --- ([(1|0)]{12}) # BSServiceDetails --- ([[:blank:]]+) # Pad --- (RANDOMIZE|IMMEDIATE|[[:digit:]]{1,2}) # IMM --- ([[:blank:]]+) # Pad --- ([[:digit:]]{1,2}) # WT --- ([[:blank:]]+) # Pad --- ([[:digit:]]{1,2}) # Nu --- ([[:blank:]]+) # Pad --- ([0-1]) # FrameLngFctr --- ([[:blank:]]+) # Pad --- ([[:digit:]]{1,2}) # TSPtr --- ([[:blank:]]+) # Pad --- ([0-7]) # MinPriority --- ([[:blank:]]+) # Pad --- (PASS|TRUE|FAIL|FALSE) # ExtdSrvcsEnabled --- ([[:blank:]]+) # Pad --- (.*) # ConditionalFields --- }] 0 --- } 68 -select * from test_regex($$ - ^TETRA_MODE_CMD # Message Type - ([[:blank:]]+) # Pad - (ETS_1_1|ETS_1_2|ETS_2_2) # SystemCode - ([[:blank:]]+) # Pad - (CONTINUOUS|CARRIER|MCCH|TRAFFIC) # SharingMode - ([[:blank:]]+) # Pad - ([[:digit:]]{1,2}) # ColourCode - ([[:blank:]]+) # Pad - (1|2|3|4|6|9|12|18) # TSReservedFrames - ([[:blank:]]+) # Pad - (PASS|TRUE|FAIL|FALSE) # UPlaneDTX - ([[:blank:]]+) # Pad - (PASS|TRUE|FAIL|FALSE) # Frame18Extension - ([[:blank:]]+) # Pad - ([[:digit:]]{1,4}) # MCC - ([[:blank:]]+) # Pad - ([[:digit:]]{1,5}) # MNC - ([[:blank:]]+) # Pad - (BOTH|BCAST|ENQRY|NONE) # NbrCellBcast - ([[:blank:]]+) # Pad - (UNKNOWN|LOW|MEDIUM|HIGH) # CellServiceLevel - ([[:blank:]]+) # Pad - (PASS|TRUE|FAIL|FALSE) # LateEntryInfo - ([[:blank:]]+) # Pad - (300|400) # FrequencyBand - ([[:blank:]]+) # Pad - (NORMAL|REVERSE) # ReverseOperation - ([[:blank:]]+) # Pad - (NONE|\+6\.25|\-6\.25|\+12\.5) # Offset - ([[:blank:]]+) # Pad - (10) # DuplexSpacing - ([[:blank:]]+) # Pad - ([[:digit:]]{1,4}) # MainCarrierNr - ([[:blank:]]+) # Pad - (0|1|2|3) # NrCSCCH - ([[:blank:]]+) # Pad - (15|20|25|30|35|40|45) # MSTxPwrMax - ([[:blank:]]+) # Pad - (\-125|\-120|\-115|\-110|\-105|\-100|\-95|\-90|\-85|\-80|\-75|\-70|\-65|\-60|\-55|\-50) - # RxLevAccessMin - ([[:blank:]]+) # Pad - (\-53|\-51|\-49|\-47|\-45|\-43|\-41|\-39|\-37|\-35|\-33|\-31|\-29|\-27|\-25|\-23) - # AccessParameter - ([[:blank:]]+) # Pad - (DISABLE|[[:digit:]]{3,4}) # RadioDLTimeout - ([[:blank:]]+) # Pad - (\-[[:digit:]]{2,3}) # RSSIThreshold - ([[:blank:]]+) # Pad - ([[:digit:]]{1,5}) # CCKIdSCKVerNr - ([[:blank:]]+) # Pad - ([[:digit:]]{1,5}) # LocationArea - ([[:blank:]]+) # Pad - ([(1|0)]{16}) # SubscriberClass - ([[:blank:]]+) # Pad - ([(1|0)]{12}) # BSServiceDetails - ([[:blank:]]+) # Pad - (RANDOMIZE|IMMEDIATE|[[:digit:]]{1,2}) # IMM - ([[:blank:]]+) # Pad - ([[:digit:]]{1,2}) # WT - ([[:blank:]]+) # Pad - ([[:digit:]]{1,2}) # Nu - ([[:blank:]]+) # Pad - ([0-1]) # FrameLngFctr - ([[:blank:]]+) # Pad - ([[:digit:]]{1,2}) # TSPtr - ([[:blank:]]+) # Pad - ([0-7]) # MinPriority - ([[:blank:]]+) # Pad - (PASS|TRUE|FAIL|FALSE) # ExtdSrvcsEnabled - ([[:blank:]]+) # Pad - (.*) # ConditionalFields - $$, '', 'xLMPQ'); - test_regex --------------------------------------------------------- - {68,REG_UBOUNDS,REG_UNONPOSIX,REG_UUNPORT,REG_ULOCALE} -(1 row) - --- test reg-33.16.1 {Bug [8d2c0da36d]- another "in the wild" RE} { --- lindex [regexp -about "^MRK:client1: =1339 14HKelly Talisman 10011000 (\[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]*) \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* 8 0 8 0 0 0 77 77 1 1 2 0 11 { 1 3 8 \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* 00000000 1 13HC6 My Creator 2 3 8 \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* 00000000 1 31HC7 Slightly offensive name, huh 3 8 8 \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* 00000000 1 23HE-mail:kelly@hotbox.com 4 9 8 \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* 00000000 1 17Hcompface must die 5 10 8 \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* 00000000 0 3HAir 6 12 8 \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* 00000000 1 14HPGP public key 7 13 8 \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* 00000000 1 16Hkelly@hotbox.com 8 30 8 \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* 00000000 0 12H2 text/plain 9 30 8 \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* 00000000 0 13H2 x-kom/basic 10 33 8 \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* 00000000 1 1H0 11 14 8 \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* \[0-9\]* 00000000 1 1H3 }\r?"] 0 --- } 1 -select * from test_regex(E'^MRK:client1: =1339 14HKelly Talisman 10011000 ([0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]*) [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* 8 0 8 0 0 0 77 77 1 1 2 0 11 { 1 3 8 [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* 00000000 1 13HC6 My Creator 2 3 8 [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* 00000000 1 31HC7 Slightly offensive name, huh 3 8 8 [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* 00000000 1 23HE-mail:kelly@hotbox.com 4 9 8 [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* 00000000 1 17Hcompface must die 5 10 8 [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* 00000000 0 3HAir 6 12 8 [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* 00000000 1 14HPGP public key 7 13 8 [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* 00000000 1 16Hkelly@hotbox.com 8 30 8 [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* 00000000 0 12H2 text/plain 9 30 8 [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* 00000000 0 13H2 x-kom/basic 10 33 8 [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* 00000000 1 1H0 11 14 8 [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* [0-9]* 00000000 1 1H3 }\r?', '', 'BMS'); - test_regex ------------------------------------------ - {1,REG_UBRACES,REG_UUNSPEC,REG_UUNPORT} -(1 row) - --- test reg-33.15 {constraint fixes} { --- regexp {(^)+^} x --- } 1 -select * from test_regex('(^)+^', 'x', 'N'); - test_regex ---------------------- - {1,REG_UEMPTYMATCH} - {"",""} -(2 rows) - --- test reg-33.16 {constraint fixes} { --- regexp {($^)+} x --- } 0 -select * from test_regex('($^)+', 'x', 'N'); - test_regex ---------------------- - {1,REG_UEMPTYMATCH} -(1 row) - --- test reg-33.17 {constraint fixes} { --- regexp {(^$)*} x --- } 1 -select * from test_regex('(^$)*', 'x', 'N'); - test_regex ---------------------- - {1,REG_UEMPTYMATCH} - {"",NULL} -(2 rows) - --- test reg-33.18 {constraint fixes} { --- regexp {(^(?!aa))+} {aa bb cc} --- } 0 -select * from test_regex('(^(?!aa))+', 'aa bb cc', 'HP'); - test_regex ------------------------------------ - {1,REG_ULOOKAROUND,REG_UNONPOSIX} -(1 row) - --- test reg-33.19 {constraint fixes} { --- regexp {(^(?!aa)(?!bb)(?!cc))+} {aa x} --- } 0 -select * from test_regex('(^(?!aa)(?!bb)(?!cc))+', 'aa x', 'HP'); - test_regex ------------------------------------ - {1,REG_ULOOKAROUND,REG_UNONPOSIX} -(1 row) - --- test reg-33.20 {constraint fixes} { --- regexp {(^(?!aa)(?!bb)(?!cc))+} {bb x} --- } 0 -select * from test_regex('(^(?!aa)(?!bb)(?!cc))+', 'bb x', 'HP'); - test_regex ------------------------------------ - {1,REG_ULOOKAROUND,REG_UNONPOSIX} -(1 row) - --- test reg-33.21 {constraint fixes} { --- regexp {(^(?!aa)(?!bb)(?!cc))+} {cc x} --- } 0 -select * from test_regex('(^(?!aa)(?!bb)(?!cc))+', 'cc x', 'HP'); - test_regex ------------------------------------ - {1,REG_ULOOKAROUND,REG_UNONPOSIX} -(1 row) - --- test reg-33.22 {constraint fixes} { --- regexp {(^(?!aa)(?!bb)(?!cc))+} {dd x} --- } 1 -select * from test_regex('(^(?!aa)(?!bb)(?!cc))+', 'dd x', 'HP'); - test_regex ------------------------------------ - {1,REG_ULOOKAROUND,REG_UNONPOSIX} - {"",""} -(2 rows) - --- test reg-33.23 {} { --- regexp {abcd(\m)+xyz} x --- } 0 -select * from test_regex('abcd(\m)+xyz', 'x', 'ILP'); - test_regex ------------------------------------------------ - {1,REG_UNONPOSIX,REG_ULOCALE,REG_UIMPOSSIBLE} -(1 row) - --- test reg-33.24 {} { --- regexp {abcd(\m)+xyz} a --- } 0 -select * from test_regex('abcd(\m)+xyz', 'a', 'ILP'); - test_regex ------------------------------------------------ - {1,REG_UNONPOSIX,REG_ULOCALE,REG_UIMPOSSIBLE} -(1 row) - --- test reg-33.25 {} { --- regexp {^abcd*(((((^(a c(e?d)a+|)+|)+|)+|)+|a)+|)} x --- } 0 -select * from test_regex('^abcd*(((((^(a c(e?d)a+|)+|)+|)+|)+|a)+|)', 'x', 'S'); - test_regex ------------------ - {7,REG_UUNSPEC} -(1 row) - --- test reg-33.26 {} { --- regexp {a^(^)bcd*xy(((((($a+|)+|)+|)+$|)+|)+|)^$} x --- } 0 -select * from test_regex('a^(^)bcd*xy(((((($a+|)+|)+|)+$|)+|)+|)^$', 'x', 'IS'); - test_regex ---------------------------------- - {7,REG_UUNSPEC,REG_UIMPOSSIBLE} -(1 row) - --- test reg-33.27 {} { --- regexp {xyz(\Y\Y)+} x --- } 0 -select * from test_regex('xyz(\Y\Y)+', 'x', 'LP'); - test_regex -------------------------------- - {1,REG_UNONPOSIX,REG_ULOCALE} -(1 row) - --- test reg-33.28 {} { --- regexp {x|(?:\M)+} x --- } 1 -select * from test_regex('x|(?:\M)+', 'x', 'LNP'); - test_regex ------------------------------------------------ - {0,REG_UNONPOSIX,REG_ULOCALE,REG_UEMPTYMATCH} - {x} -(2 rows) - --- test reg-33.29 {} { --- # This is near the limits of the RE engine --- regexp [string repeat x*y*z* 480] x --- } 1 --- The runtime cost of this seems out of proportion to the value, --- so for Postgres purposes reduce the repeat to 200x -select * from test_regex(repeat('x*y*z*', 200), 'x', 'N'); - test_regex ---------------------- - {0,REG_UEMPTYMATCH} - {x} -(2 rows) - --- test reg-33.30 {Bug 1080042} { --- regexp {(\Y)+} foo --- } 1 -select * from test_regex('(\Y)+', 'foo', 'LNP'); - test_regex ------------------------------------------------ - {1,REG_UNONPOSIX,REG_ULOCALE,REG_UEMPTYMATCH} - {"",""} -(2 rows) - --- and now, tests not from either Spencer or the Tcl project --- These cases exercise additional code paths in pushfwd()/push()/combine() -select * from test_regex('a\Y(?=45)', 'a45', 'HLP'); - test_regex ------------------------------------------------ - {0,REG_ULOOKAROUND,REG_UNONPOSIX,REG_ULOCALE} - {a} -(2 rows) - -select * from test_regex('a(?=.)c', 'ac', 'HP'); - test_regex ------------------------------------ - {0,REG_ULOOKAROUND,REG_UNONPOSIX} - {ac} -(2 rows) - -select * from test_regex('a(?=.).*(?=3)3*', 'azz33', 'HP'); - test_regex ------------------------------------ - {0,REG_ULOOKAROUND,REG_UNONPOSIX} - {azz33} -(2 rows) - -select * from test_regex('a(?=\w)\w*(?=.).*', 'az3%', 'HLP'); - test_regex ------------------------------------------------ - {0,REG_ULOOKAROUND,REG_UNONPOSIX,REG_ULOCALE} - {az3%} -(2 rows) - --- These exercise the bulk-arc-movement paths in moveins() and moveouts(); --- you may need to make them longer if you change BULK_ARC_OP_USE_SORT() -select * from test_regex('ABCDEFGHIJKLMNOPQRSTUVWXYZ(?:\w|a|b|c|d|e|f|0|1|2|3|4|5|6|Q)', - 'ABCDEFGHIJKLMNOPQRSTUVWXYZ3', 'LP'); - test_regex -------------------------------- - {0,REG_UNONPOSIX,REG_ULOCALE} - {ABCDEFGHIJKLMNOPQRSTUVWXYZ3} -(2 rows) - -select * from test_regex('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789(\Y\Y)+', - 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789Z', 'LP'); - test_regex -------------------------------------------- - {1,REG_UNONPOSIX,REG_ULOCALE} - {ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,""} -(2 rows) - -select * from test_regex('((x|xabcdefghijklmnopqrstuvwxyz0123456789)x*|[^y]z)$', - 'az', ''); - test_regex --------------- - {2} - {az,az,NULL} -(2 rows) - +psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: FATAL: could not read blocks 0..0 in file "global/2671": read only 0 of 8192 bytes diff -U3 /tmp/cirrus-ci-build/src/test/modules/test_regex/expected/test_regex_utf8_1.out /tmp/cirrus-ci-build/build/testrun/test_regex-running/regress/results/test_regex_utf8.out --- /tmp/cirrus-ci-build/src/test/modules/test_regex/expected/test_regex_utf8_1.out 2024-10-31 13:33:17.305565000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/test_regex-running/regress/results/test_regex_utf8.out 2024-10-31 13:37:42.347906000 +0000 @@ -6,3 +6,169 @@ AS skip_test \gset \if :skip_test \quit +\endif +set client_encoding = utf8; +set standard_conforming_strings = on; +-- Run the Tcl test cases that require Unicode +-- expectMatch 9.44 EMP* {a[\u00fe-\u0507][\u00ff-\u0300]b} \ +-- "a\u0102\u02ffb" "a\u0102\u02ffb" +select * from test_regex('a[\u00fe-\u0507][\u00ff-\u0300]b', E'a\u0102\u02ffb', 'EMP*'); +ERROR: function test_regex(unknown, unknown, unknown) does not exist +LINE 1: select * from test_regex('a[\u00fe-\u0507][\u00ff-\u0300]b',... + ^ +HINT: No function matches the given name and argument types. You might need to add explicit type casts. +-- expectMatch 13.27 P "a\\U00001234x" "a\u1234x" "a\u1234x" +select * from test_regex('a\U00001234x', E'a\u1234x', 'P'); +ERROR: function test_regex(unknown, unknown, unknown) does not exist +LINE 1: select * from test_regex('a\U00001234x', E'a\u1234x', 'P'); + ^ +HINT: No function matches the given name and argument types. You might need to add explicit type casts. +-- expectMatch 13.28 P {a\U00001234x} "a\u1234x" "a\u1234x" +select * from test_regex('a\U00001234x', E'a\u1234x', 'P'); +ERROR: function test_regex(unknown, unknown, unknown) does not exist +LINE 1: select * from test_regex('a\U00001234x', E'a\u1234x', 'P'); + ^ +HINT: No function matches the given name and argument types. You might need to add explicit type casts. +-- expectMatch 13.29 P "a\\U0001234x" "a\u1234x" "a\u1234x" +-- Tcl has relaxed their code to allow 1-8 hex digits, but Postgres hasn't +select * from test_regex('a\U0001234x', E'a\u1234x', 'P'); +ERROR: function test_regex(unknown, unknown, unknown) does not exist +LINE 1: select * from test_regex('a\U0001234x', E'a\u1234x', 'P'); + ^ +HINT: No function matches the given name and argument types. You might need to add explicit type casts. +-- expectMatch 13.30 P {a\U0001234x} "a\u1234x" "a\u1234x" +-- Tcl has relaxed their code to allow 1-8 hex digits, but Postgres hasn't +select * from test_regex('a\U0001234x', E'a\u1234x', 'P'); +ERROR: function test_regex(unknown, unknown, unknown) does not exist +LINE 1: select * from test_regex('a\U0001234x', E'a\u1234x', 'P'); + ^ +HINT: No function matches the given name and argument types. You might need to add explicit type casts. +-- expectMatch 13.31 P "a\\U000012345x" "a\u12345x" "a\u12345x" +select * from test_regex('a\U000012345x', E'a\u12345x', 'P'); +ERROR: function test_regex(unknown, unknown, unknown) does not exist +LINE 1: select * from test_regex('a\U000012345x', E'a\u12345x', 'P')... + ^ +HINT: No function matches the given name and argument types. You might need to add explicit type casts. +-- expectMatch 13.32 P {a\U000012345x} "a\u12345x" "a\u12345x" +select * from test_regex('a\U000012345x', E'a\u12345x', 'P'); +ERROR: function test_regex(unknown, unknown, unknown) does not exist +LINE 1: select * from test_regex('a\U000012345x', E'a\u12345x', 'P')... + ^ +HINT: No function matches the given name and argument types. You might need to add explicit type casts. +-- expectMatch 13.33 P "a\\U1000000x" "a\ufffd0x" "a\ufffd0x" +-- Tcl allows this as a standalone character, but Postgres doesn't +select * from test_regex('a\U1000000x', E'a\ufffd0x', 'P'); +ERROR: function test_regex(unknown, unknown, unknown) does not exist +LINE 1: select * from test_regex('a\U1000000x', E'a\ufffd0x', 'P'); + ^ +HINT: No function matches the given name and argument types. You might need to add explicit type casts. +-- expectMatch 13.34 P {a\U1000000x} "a\ufffd0x" "a\ufffd0x" +-- Tcl allows this as a standalone character, but Postgres doesn't +select * from test_regex('a\U1000000x', E'a\ufffd0x', 'P'); +ERROR: function test_regex(unknown, unknown, unknown) does not exist +LINE 1: select * from test_regex('a\U1000000x', E'a\ufffd0x', 'P'); + ^ +HINT: No function matches the given name and argument types. You might need to add explicit type casts. +-- Additional tests, not derived from Tcl +-- Exercise logic around high character ranges a bit more +select * from test_regex('a + [\u1000-\u1100]* + [\u3000-\u3100]* + [\u1234-\u25ff]+ + [\u2000-\u35ff]* + [\u2600-\u2f00]* + \u1236\u1236x', + E'a\u1234\u1236\u1236x', 'xEMP'); +ERROR: function test_regex(unknown, unknown, unknown) does not exist +LINE 1: select * from test_regex('a + ^ +HINT: No function matches the given name and argument types. You might need to add explicit type casts. +select * from test_regex('[[:alnum:]]*[[:upper:]]*[\u1000-\u2000]*\u1237', + E'\u1500\u1237', 'ELMP'); +ERROR: function test_regex(unknown, unknown, unknown) does not exist +LINE 1: select * from test_regex('[[:alnum:]]*[[:upper:]]*[\u1000-\u... + ^ +HINT: No function matches the given name and argument types. You might need to add explicit type casts. +select * from test_regex('[[:alnum:]]*[[:upper:]]*[\u1000-\u2000]*\u1237', + E'A\u1239', 'ELMP'); +ERROR: function test_regex(unknown, unknown, unknown) does not exist +LINE 1: select * from test_regex('[[:alnum:]]*[[:upper:]]*[\u1000-\u... + ^ +HINT: No function matches the given name and argument types. You might need to add explicit type casts. +select * from test_regex('[[:alnum:]]*[[:upper:]]*[\u1000-\u2000]*\u1237', + E'\u1500\u1237', 'iELMP'); +ERROR: function test_regex(unknown, unknown, unknown) does not exist +LINE 1: select * from test_regex('[[:alnum:]]*[[:upper:]]*[\u1000-\u... + ^ +HINT: No function matches the given name and argument types. You might need to add explicit type casts. +-- systematically test char classes +select * from test_regex('[[:alnum:]]+', E'x*\u1500\u1237', 'L'); +ERROR: function test_regex(unknown, unknown, unknown) does not exist +LINE 1: select * from test_regex('[[:alnum:]]+', E'x*\u1500\u1237',... + ^ +HINT: No function matches the given name and argument types. You might need to add explicit type casts. +select * from test_regex('[[:alpha:]]+', E'x*\u1500\u1237', 'L'); +ERROR: function test_regex(unknown, unknown, unknown) does not exist +LINE 1: select * from test_regex('[[:alpha:]]+', E'x*\u1500\u1237',... + ^ +HINT: No function matches the given name and argument types. You might need to add explicit type casts. +select * from test_regex('[[:ascii:]]+', E'x\u1500\u1237', 'L'); +ERROR: function test_regex(unknown, unknown, unknown) does not exist +LINE 1: select * from test_regex('[[:ascii:]]+', E'x\u1500\u1237', ... + ^ +HINT: No function matches the given name and argument types. You might need to add explicit type casts. +select * from test_regex('[[:blank:]]+', E'x \t\u1500\u1237', 'L'); +ERROR: function test_regex(unknown, unknown, unknown) does not exist +LINE 1: select * from test_regex('[[:blank:]]+', E'x \t\u1500\u1237... + ^ +HINT: No function matches the given name and argument types. You might need to add explicit type casts. +select * from test_regex('[[:cntrl:]]+', E'x\u1500\u1237', 'L'); +ERROR: function test_regex(unknown, unknown, unknown) does not exist +LINE 1: select * from test_regex('[[:cntrl:]]+', E'x\u1500\u1237', ... + ^ +HINT: No function matches the given name and argument types. You might need to add explicit type casts. +select * from test_regex('[[:digit:]]+', E'x9\u1500\u1237', 'L'); +ERROR: function test_regex(unknown, unknown, unknown) does not exist +LINE 1: select * from test_regex('[[:digit:]]+', E'x9\u1500\u1237',... + ^ +HINT: No function matches the given name and argument types. You might need to add explicit type casts. +select * from test_regex('[[:graph:]]+', E'x\u1500\u1237', 'L'); +ERROR: function test_regex(unknown, unknown, unknown) does not exist +LINE 1: select * from test_regex('[[:graph:]]+', E'x\u1500\u1237', ... + ^ +HINT: No function matches the given name and argument types. You might need to add explicit type casts. +select * from test_regex('[[:lower:]]+', E'x\u1500\u1237', 'L'); +ERROR: function test_regex(unknown, unknown, unknown) does not exist +LINE 1: select * from test_regex('[[:lower:]]+', E'x\u1500\u1237', ... + ^ +HINT: No function matches the given name and argument types. You might need to add explicit type casts. +select * from test_regex('[[:print:]]+', E'x\u1500\u1237', 'L'); +ERROR: function test_regex(unknown, unknown, unknown) does not exist +LINE 1: select * from test_regex('[[:print:]]+', E'x\u1500\u1237', ... + ^ +HINT: No function matches the given name and argument types. You might need to add explicit type casts. +select * from test_regex('[[:punct:]]+', E'x.\u1500\u1237', 'L'); +ERROR: function test_regex(unknown, unknown, unknown) does not exist +LINE 1: select * from test_regex('[[:punct:]]+', E'x.\u1500\u1237',... + ^ +HINT: No function matches the given name and argument types. You might need to add explicit type casts. +select * from test_regex('[[:space:]]+', E'x \t\u1500\u1237', 'L'); +ERROR: function test_regex(unknown, unknown, unknown) does not exist +LINE 1: select * from test_regex('[[:space:]]+', E'x \t\u1500\u1237... + ^ +HINT: No function matches the given name and argument types. You might need to add explicit type casts. +select * from test_regex('[[:upper:]]+', E'xX\u1500\u1237', 'L'); +ERROR: function test_regex(unknown, unknown, unknown) does not exist +LINE 1: select * from test_regex('[[:upper:]]+', E'xX\u1500\u1237',... + ^ +HINT: No function matches the given name and argument types. You might need to add explicit type casts. +select * from test_regex('[[:xdigit:]]+', E'xa9\u1500\u1237', 'L'); +ERROR: function test_regex(unknown, unknown, unknown) does not exist +LINE 1: select * from test_regex('[[:xdigit:]]+', E'xa9\u1500\u1237... + ^ +HINT: No function matches the given name and argument types. You might need to add explicit type casts. +select * from test_regex('[[:word:]]+', E'x_*\u1500\u1237', 'L'); +ERROR: function test_regex(unknown, unknown, unknown) does not exist +LINE 1: select * from test_regex('[[:word:]]+', E'x_*\u1500\u1237',... + ^ +HINT: No function matches the given name and argument types. You might need to add explicit type casts.