📄 other.c
字号:
TEST_SEARCH ("d$|c(a$|$)", "xc", 0, 2); TEST_SEARCH ("d$|c(a$|$)", "xca", 0, 3); TEST_SEARCH ("d$|c($|b$)", "xd", 0, 2); TEST_SEARCH ("d$|c($|b$)", "xc", 0, 2); TEST_SEARCH ("d$|c($|b$)", "xcb", 0, 3); TEST_SEARCH ("$|c(a$|b$)", "x", 0, 1); TEST_SEARCH ("$|c(a$|b$)", "xca", 0, 3); TEST_SEARCH ("$|c(a$|b$)", "xcb", 0, 3); TEST_SEARCH ("e(d$|c((a$|$)))", "xed", 0, 3); TEST_SEARCH ("e(d$|c((a$|$)))", "xec", 0, 3); TEST_SEARCH ("e(d$|c((a$|$)))", "xeca", 0, 3); TEST_SEARCH ("e(d$|c(($|b$)))", "xed", 0, 3); TEST_SEARCH ("e(d$|c(($|b$)))", "xec", 0, 3); TEST_SEARCH ("e(d$|c(($|b$)))", "xecb", 0, 4); TEST_SEARCH ("e($|c((a$|b$)))", "xe", 0, 2); TEST_SEARCH ("e($|c((a$|b$)))", "xeca", 0, 4); TEST_SEARCH ("e($|c((a$|b$)))", "xecb", 0, 4); TEST_SEARCH ("ed$|(c((a$|$)))", "xed", 0, 3); TEST_SEARCH ("ed$|(c((a$|$)))", "xc", 0, 2); TEST_SEARCH ("ed$|(c((a$|$)))", "xca", 0, 3); TEST_SEARCH ("ed$|(c(($|b$)))", "xed", 0, 3); TEST_SEARCH ("ed$|(c(($|b$)))", "xc", 0, 2); TEST_SEARCH ("ed$|(c(($|b$)))", "xcb", 0, 3); TEST_SEARCH ("$|(c((a$|b$)))", "x", 0, 1); TEST_SEARCH ("$|(c((a$|b$)))", "xca", 0, 3); TEST_SEARCH ("$|(c((a$|b$)))", "xcb", 0, 3); TEST_SEARCH ("d$|($|(a|b)$)", "x", 0, 1); TEST_SEARCH ("d$|($|(a|b)$)", "xa", 0, 2); TEST_SEARCH ("d$|($|(a|b)$)", "xb", 0, 2); TEST_SEARCH ("$|(c$|(a|b)$)", "x", 0, 1); TEST_SEARCH ("$|(c$|(a|b)$)", "xc", 0, 2); TEST_SEARCH ("$|(c$|(a|b)$)", "xa", 0, 2); TEST_SEARCH ("$|(c$|(a|b)$)", "xb", 0, 2); re_set_syntax (0); test_match ("[^\n]", "a"); test_match ("[^a]", "\n"); TEST_SEARCH ("^a", "b\na", 0, 3); TEST_SEARCH ("b$", "b\na", 0, 3); test_case_fold ("[!-`]", "A"); test_case_fold ("[!-`]", "a"); re_set_syntax (RE_CONTEXT_INDEP_OPS | RE_NO_BK_VBAR | RE_NO_BK_PARENS | RE_NO_BK_BRACES | RE_INTERVALS); valid_nonposix_pattern ("()^a"); valid_nonposix_pattern ("()\\1^a"); /* Per Cederqvist (cedar@lysator.liu.se) bug. */ re_set_syntax (RE_SYNTAX_EMACS); /* One `a' before the \n and 638 a's after it. */ test_search_return (0, "\\(.*\\)\n\\(\\(.\\|\n\\)*\\)$", "a\naaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); /* No a's before the \n and 639 a's after it. */ test_search_return (0, "\\(.*\\)\n\\(\\(.\\|\n\\)*\\)$", "\naaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); /* One `a' before the \n and 639 a's after it. */ test_search_return (0, "\\(.*\\)\n\\(\\(.\\|\n\\)*\\)$", "a\naaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); /* No a's before the \n and 640 a's after it. */ test_search_return (0, "\\(.*\\)\n\\(\\(.\\|\n\\)*\\)$", "\naaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); re_set_syntax (RE_NO_BK_VBAR | RE_NO_BK_PARENS); TEST_SEARCH ("^(^a)", "ab", 0, 2); TEST_SEARCH ("(a$)$", "ba", 0, 2); test_match ("a|$b", "$b"); /* Mike's curiosity item. */ re_set_syntax (RE_NO_BK_VBAR | RE_NO_BK_PARENS); test_all_registers ("(foo|foobar)(foo|bar)*\\1(foo|bar)*", "foobarfoobar", "", 0, 12, 0, 3, 3, 6, 9, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1); /* Another one from Mike. */ test_match ("(foo|foobarfoo)(bar)*", "foobarfoo"); /* And another. */ test_match("(foo|foobar)(bar|barfoo)?\\1", "foobarfoobar"); re_set_syntax (RE_NO_BK_PARENS | RE_INTERVALS | RE_NO_BK_VBAR | RE_NO_BK_BRACES); /* xx get new ones from ext.*/ test_match ("((a{0,}{0,0}()\\3\\b\\B\\<\\>\\`\\')|b)*", "bb"); test_all_registers ("((a{0,}{0,0}()\\3\\b\\B\\<\\>\\`\\')|b)*", "", "bb", 0, 2, 1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1); test_match ("((a+?*{0,}{0,0}()\\3\\b\\B\\<\\>\\`\\')|b)", "b"); test_all_registers ("((a+?*{0,}{0,0}()\\3\\b\\B\\<\\>\\`\\')|b)", "", "b", 0, 1, 0, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1); /* Valid anchoring. */ /* See generic_test.c and extended_test.c for more search tests. xx Not sure all these tests are represented in the search tests. */ re_set_syntax (RE_NO_BK_PARENS | RE_NO_BK_VBAR); valid_nonposix_pattern ("(((((((((((((((((((((((((((((((((^a)))))))))))))))))))))))))))))))))"); valid_nonposix_pattern ("(((((((((((((((((((((((((((((((((a$)))))))))))))))))))))))))))))))))"); valid_nonposix_pattern ("\\b\\B\\<\\>\\`\\'^a"); valid_nonposix_pattern ("a$\\b\\B\\<\\>\\`\\'"); valid_nonposix_pattern ("(^a)"); valid_nonposix_pattern ("(a$)"); valid_nonposix_pattern ("(^a)b"); valid_nonposix_pattern ("b(a$)"); valid_nonposix_pattern ("(^a|^b)c"); valid_nonposix_pattern ("c(a$|b$)"); valid_nonposix_pattern ("(^a|^b)|^c"); valid_nonposix_pattern ("(a$|b$)|c$"); valid_nonposix_pattern ("^c|(^a|^b)"); valid_nonposix_pattern ("c$|(a$|b$)"); valid_nonposix_pattern ("(^a|^b)c|^d"); valid_nonposix_pattern ("c(a$|b$)|d$"); valid_nonposix_pattern ("(((^a|^b))c|^d)e"); valid_nonposix_pattern ("(c((a|b))|d)e$"); valid_nonposix_pattern ("^d(c|e((a|b)))"); valid_nonposix_pattern ("d(c$|e((a$|b$)))"); valid_nonposix_pattern ("(((^a|^b))c)|^de"); valid_nonposix_pattern ("(((a|b))c$)|de$"); valid_nonposix_pattern ("((a$)$)$"); valid_nonposix_pattern ("^(^(^a))"); valid_nonposix_pattern ("^de|^(c((a|b)))"); valid_nonposix_pattern ("^de|(^c((a|b)))"); valid_nonposix_pattern ("de$|(c((a|b)$))"); valid_nonposix_pattern ("de$|(c((a|b))$)"); valid_nonposix_pattern ("de$|(c((a|b)))$"); valid_nonposix_pattern ("^a(b|c)|^d"); valid_nonposix_pattern ("a(b$|c$)|d$"); valid_nonposix_pattern ("^d|^a(b|c)"); valid_nonposix_pattern ("d$|a(b$|c$)"); valid_nonposix_pattern ("^d|^(b|c)a"); valid_nonposix_pattern ("d$|(b|c)a$"); valid_nonposix_pattern ("^(a)(b|c)|^d"); valid_nonposix_pattern ("(a)(b|c)$|d$"); valid_nonposix_pattern ("(^a)(b|c)|^d"); valid_nonposix_pattern ("(a)(b$|c$)|d$"); valid_nonposix_pattern ("^d|^(b|c)(a)"); valid_nonposix_pattern ("d$|(b|c)(a)$"); valid_nonposix_pattern ("^d|(^b|^c)(a)"); valid_nonposix_pattern ("d$|(b|c)(a$)"); valid_nonposix_pattern ("^d|^(a)(b|c)"); valid_nonposix_pattern ("^d|(^a)(b|c)"); valid_nonposix_pattern ("d$|(a)(b$|c$)"); valid_nonposix_pattern ("((^a|^b)|^c)|^d"); valid_nonposix_pattern ("d$|(c$|(a$|b$))"); /* Tests shouldn't match. */ test_should_match = false; /* Test that RE_CONTEXT_INVALID_OPS has precedence over RE_CONTEXT_INDEP_OPS. */ re_set_syntax (RE_CONTEXT_INDEP_OPS | RE_CONTEXT_INVALID_OPS | RE_NO_BK_VBAR | RE_NO_BK_PARENS | RE_NO_BK_BRACES | RE_INTERVALS); INVALID_PATTERN ("*"); INVALID_PATTERN ("^*"); INVALID_PATTERN ("a|*"); INVALID_PATTERN ("(*)"); INVALID_PATTERN ("^+"); INVALID_PATTERN ("+"); INVALID_PATTERN ("a|+"); INVALID_PATTERN ("(+)"); INVALID_PATTERN ("^?"); INVALID_PATTERN ("?"); INVALID_PATTERN ("a|?"); INVALID_PATTERN ("(?)"); INVALID_PATTERN ("^{1}"); INVALID_PATTERN ("{1}"); INVALID_PATTERN ("a|{1}"); INVALID_PATTERN ("({1})");#if 0 /* No longer have this syntax option -- POSIX says empty alternatives are undefined as of draft 11.2. */ /* You can't have empty alternatives if RE_NO_EMPTY_ALTS is set. */ re_set_syntax (RE_NO_BK_VBAR | RE_NO_BK_PARENS | RE_NO_EMPTY_ALTS); INVALID_PATTERN ("|"); INVALID_PATTERN ("^|a"); INVALID_PATTERN ("a|"); INVALID_PATTERN ("a||"); INVALID_PATTERN ("a||b"); INVALID_PATTERN ("(|a)"); INVALID_PATTERN ("(a|)"); INVALID_PATTERN ("(a|)"); /* Test above with `\(' and `\)'. */ re_set_syntax (RE_NO_BK_VBAR | RE_NO_EMPTY_ALTS); INVALID_PATTERN ("\\(|a\\)"); INVALID_PATTERN ("\\(a|\\)"); re_set_syntax (RE_NO_BK_VBAR | RE_NO_BK_PARENS | RE_NO_EMPTY_ALTS); INVALID_PATTERN ("(|)()$|d$");#endif /* Test grouping. */ test_match ("()", "a"); /* Test backslashed intervals that are CONTEXTly invalid if have nothing on which to operate. */ re_set_syntax (RE_INTERVALS | RE_CONTEXT_INVALID_OPS); INVALID_PATTERN ("\\{1\\}"); re_set_syntax (0); test_match ("z-a", "a"); re_set_syntax (RE_BK_PLUS_QM); INVALID_PATTERN ("a*\\"); re_set_syntax (0); INVALID_PATTERN ("a*\\"); re_set_syntax (RE_BACKSLASH_ESCAPE_IN_LISTS); INVALID_PATTERN ("[\\"); #if 0 /* Empty groups are always ok now. (13 Sep 92) */ re_set_syntax (RE_NO_BK_VBAR | RE_NO_BK_PARENS | RE_NO_EMPTY_GROUPS); INVALID_PATTERN ("(|)()$|d$");#endif printf ("\nFinished non-POSIX tests.\n");}/*Local variables:make-backup-files: tversion-control: ttrim-versions-without-asking: nilEnd:*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -