📄 tests.txt
字号:
a(b|c){2,4}d abcd 0 4 2 3a(b|c){2,4}d abcbd 0 5 3 4a(b|c){2,4}d abcbcd 0 6 4 5a(b|c){2,}d abcd 0 4 2 3a(b|c){2,}d abcbd 0 5 3 4a(b+|((c)*))+d abd 0 3 1 2 -1 -1 -1 -1a(b+|((c)*))+d abcd 0 4 2 3 2 3 2 3- match_default normal REG_EXTENDED REG_STARTEND REG_NOSPEC literal\**?/{} \\**?/{} 0 7- match_default normal REG_EXTENDED REG_NO_POSIX_TEST ; we disable POSIX testing because it can't handle escapes in sets; try to match C++ syntax elements:; line comment://[^\n]* "++i //here is a line comment\n" 4 28; block comment:/\*([^*]|\*+[^*/])*\*+/ "/* here is a block comment */" 0 29 26 27/\*([^*]|\*+[^*/])*\*+/ "/**/" 0 4 -1 -1/\*([^*]|\*+[^*/])*\*+/ "/***/" 0 5 -1 -1/\*([^*]|\*+[^*/])*\*+/ "/****/" 0 6 -1 -1/\*([^*]|\*+[^*/])*\*+/ "/*****/" 0 7 -1 -1/\*([^*]|\*+[^*/])*\*+/ "/*****/*/" 0 7 -1 -1; preprossor directives:^[[:blank:]]*#([^\n]*\\[[:space:]]+)*[^\n]* "#define some_symbol" 0 19 -1 -1^[[:blank:]]*#([^\n]*\\[[:space:]]+)*[^\n]* "#define some_symbol(x) #x" 0 25 -1 -1^[[:blank:]]*#([^\n]*\\[[:space:]]+)*[^\n]* "#define some_symbol(x) \\ \r\n foo();\\\r\n printf(#x);" 0 53 28 42; literals:((0x[[:xdigit:]]+)|([[:digit:]]+))u?((int(8|16|32|64))|L)? 0xFF 0 4 0 4 0 4 -1 -1 -1 -1 -1 -1 -1 -1((0x[[:xdigit:]]+)|([[:digit:]]+))u?((int(8|16|32|64))|L)? 35 0 2 0 2 -1 -1 0 2 -1 -1 -1 -1 -1 -1((0x[[:xdigit:]]+)|([[:digit:]]+))u?((int(8|16|32|64))|L)? 0xFFu 0 5 0 4 0 4 -1 -1 -1 -1 -1 -1 -1 -1((0x[[:xdigit:]]+)|([[:digit:]]+))u?((int(8|16|32|64))|L)? 0xFFL 0 5 0 4 0 4 -1 -1 4 5 -1 -1 -1 -1((0x[[:xdigit:]]+)|([[:digit:]]+))u?((int(8|16|32|64))|L)? 0xFFFFFFFFFFFFFFFFuint64 0 24 0 18 0 18 -1 -1 19 24 19 24 22 24; strings:'([^\\']|\\.)*' '\\x3A' 0 6 4 5'([^\\']|\\.)*' '\\'' 0 4 1 3'([^\\']|\\.)*' '\\n' 0 4 1 3; now try and test some unicode specific characters:- match_default normal REG_PERL REG_UNICODE_ONLY[[:unicode:]]+ a\0300\0400z 1 3[\x10-\xff] \39135\12409 -1 -1[\01-\05]{5} \36865\36865\36865\36865\36865 -1 -1; finally try some case insensitive matches:- match_default normal REG_EXTENDED REG_ICASE; upper and lower have no meaning here so they fail, however these; may compile with other libraries...;[[:lower:]] !;[[:upper:]] !0123456789@abcdefghijklmnopqrstuvwxyz\[\\\]\^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ\{\|\} 0123456789@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]\^_`abcdefghijklmnopqrstuvwxyz\{\|\} 0 72; known and suspected bugs:- match_default normal REG_EXTENDED\( ( 0 1\) ) 0 1\$ $ 0 1\^ ^ 0 1\. . 0 1\* * 0 1\+ + 0 1\? ? 0 1\[ [ 0 1\] ] 0 1\| | 0 1\\ \\ 0 1# # 0 1\# # 0 1a- a- 0 2\- - 0 1\{ { 0 1\} } 0 10 0 0 11 1 0 19 9 0 1b b 0 1B B 0 1< < 0 1> > 0 1w w 0 1W W 0 1` ` 0 1' ' 0 1\n \n 0 1, , 0 1a a 0 1f f 0 1n n 0 1r r 0 1t t 0 1v v 0 1c c 0 1x x 0 1: : 0 1(\.[[:alnum:]]+){2} "w.a.b " 1 5 3 5- match_default normal REG_EXTENDED REG_ICASEa A 0 1A a 0 1[abc]+ abcABC 0 6[ABC]+ abcABC 0 6[a-z]+ abcABC 0 6[A-Z]+ abzANZ 0 6[a-Z]+ abzABZ 0 6[A-z]+ abzABZ 0 6[[:lower:]]+ abyzABYZ 0 8[[:upper:]]+ abzABZ 0 6[[:word:]]+ abcZZZ 0 6[[:alpha:]]+ abyzABYZ 0 8[[:alnum:]]+ 09abyzABYZ 0 10; updated tests for version 2:- match_default normal REG_EXTENDED\x41 A 0 1\xff \255 0 1\xFF \255 0 1- match_default normal REG_EXTENDED REG_NO_POSIX_TEST\c@ \0 0 1- match_default normal REG_EXTENDED\cA \1 0 1\cz \58 0 1\c= !\c? !=: =: 0 2; word start:[[:<:]]abcd " abcd" 2 6[[:<:]]ab cab -1 -1[[:<:]]ab "\nab" 1 3[[:<:]]tag ::tag 2 5;word end:abc[[:>:]] abc 0 3abc[[:>:]] abcd -1 -1abc[[:>:]] abc\n 0 3abc[[:>:]] abc:: 0 3; collating elements and rewritten set code:- match_default normal REG_EXTENDED REG_STARTEND[[.zero.]] 0 0 1[[.one.]] 1 0 1[[.two.]] 2 0 1[[.three.]] 3 0 1[[.a.]] baa 1 2[[.right-curly-bracket.]] } 0 1[[.NUL.]] \0 0 1[[:<:]z] ![a[:>:]] ![[=a=]] a 0 1[[=right-curly-bracket=]] } 0 1- match_default normal REG_EXTENDED REG_STARTEND REG_ICASE[[.A.]] A 0 1[[.A.]] a 0 1[[.A.]-b]+ AaBb 0 4[A-[.b.]]+ AaBb 0 4[[.a.]-B]+ AaBb 0 4[a-[.B.]]+ AaBb 0 4- match_default normal REG_EXTENDED REG_NO_POSIX_TEST[\x61] a 0 1[\x61-c]+ abcd 0 3[a-\x63]+ abcd 0 3- match_default normal REG_EXTENDED REG_STARTEND[[.a.]-c]+ abcd 0 3[a-[.c.]]+ abcd 0 3[[:alpha:]-a] ![a-[:alpha:]] !; try mutli-character ligatures:[[.ae.]] ae 0 2[[.ae.]] aE -1 -1[[.AE.]] AE 0 2[[.Ae.]] Ae 0 2[[.ae.]-b] a -1 -1[[.ae.]-b] b 0 1[[.ae.]-b] ae 0 2[a-[.ae.]] a 0 1[a-[.ae.]] b -1 -1[a-[.ae.]] ae 0 2- match_default normal REG_EXTENDED REG_STARTEND REG_ICASE[[.ae.]] AE 0 2[[.ae.]] Ae 0 2[[.AE.]] Ae 0 2[[.Ae.]] aE 0 2[[.AE.]-B] a -1 -1[[.Ae.]-b] b 0 1[[.Ae.]-b] B 0 1[[.ae.]-b] AE 0 2- match_default normal REG_EXTENDED REG_STARTEND;extended perl style escape sequences:\e \27 0 1\x1b \27 0 1\x{1b} \27 0 1\x{} !\x{ !\x} !\x !\x{yy !\x{1b !- match_default normal REG_EXTENDED REG_STARTEND REG_NO_POSIX_TEST\l+ ABabcAB 2 5[\l]+ ABabcAB 2 5[a-\l] ![\l-a] ![\L] !\L+ abABCab 2 5\u+ abABCab 2 5[\u]+ abABCab 2 5[\U] !\U+ ABabcAB 2 5\d+ ab012ab 2 5[\d]+ ab012ab 2 5[\D] !\D+ 01abc01 2 5\s+ "ab ab" 2 5[\s]+ "ab ab" 2 5[\S] !\S+ " abc " 2 5- match_default normal REG_EXTENDED REG_STARTEND\Qabc !\Qabc\E abcd 0 3\Qabc\Ed abcde 0 4\Q+*?\\E +*?\\ 0 4\C+ abcde 0 5\X+ abcde 0 5- match_default normal REG_EXTENDED REG_STARTEND REG_UNICODE_ONLY\X+ a\768\769 0 3\X+ \2309\2307 0 2 ;DEVANAGARI script\X+ \2489\2494 0 2 ;BENGALI script- match_default normal REG_EXTENDED REG_STARTEND\Aabc abc 0 3\Aabc aabc -1 -1abc\z abc 0 3abc\z abcd -1 -1abc\Z abc\n\n 0 3abc\Z abc 0 3\Gabc abc 0 3\Gabc dabcd -1 -1a\Gbc abc -1 -1a\Aab abc -1 -1;; now test grep,; basically check all our restart types - line, word, etc; checking each one for null and non-null matches.;- match_default normal REG_EXTENDED REG_STARTEND REG_GREPa " a a a aa" 1 2 3 4 5 6 7 8 8 9a+b+ "aabaabbb ab" 0 3 3 8 9 11a(b*|c|e)d adabbdacd 0 2 2 6 6 9a "\na\na\na\naa" 1 2 3 4 5 6 7 8 8 9^ " \n\n \n\n\n" 0 0 4 4 5 5 8 8 9 9 10 10^ab "ab \nab ab\n" 0 2 5 7^[^\n]*\n " \n \n\n \n" 0 4 4 7 7 8 8 11\<abc "abcabc abc\n\nabc" 0 3 7 10 12 15\< " ab a aaa " 2 2 5 5 7 7\<\w+\W+ " aa aa a " 1 5 5 9 9 11\Aabc "abc abc" 0 3\G\w+\W+ "abc abc a cbbb " 0 5 5 9 9 11 11 18\Ga+b+ "aaababb abb" 0 4 4 7abc abc 0 3abc " abc abcabc " 1 4 5 8 8 11\n\n " \n\n\n \n \n\n\n\n " 1 3 18 20 20 22$ " \n\n \n\n\n" 3 3 4 4 7 7 8 8 9 9 10 10\b " abb a abbb " 2 2 5 5 6 6 7 7 8 8 12 12- match_default normal REG_EXTENDED REG_STARTEND REG_GREP REG_ICASEA " a a a aa" 1 2 3 4 5 6 7 8 8 9A+B+ "aabaabbb ab" 0 3 3 8 9 11A(B*|c|e)D adabbdacd 0 2 2 6 6 9A "\na\na\na\naa" 1 2 3 4 5 6 7 8 8 9^aB "Ab \nab Ab\n" 0 2 5 7\<abc "Abcabc aBc\n\nabc" 0 3 7 10 12 15ABC abc 0 3abc " ABC ABCABC " 1 4 5 8 8 11;; now test merge,;- match_default normal REG_EXTENDED REG_STARTEND REG_MERGE format_no_copy; start by testing subs:a+ "...aaa,,," $` "..." a+ "...aaa,,," $' ",,," a+ "...aaa,,," $& "aaa" a+ "...aaa,,," $0 aaaa+ "...aaa,,," $1 ""a+ "...aaa,,," $15 ""(a+)b+ "...aaabbb,,," $1 aaa[[:digit:]]* 123ab <$0> <123><><><>[[:digit:]]* 123ab1 <$0> <123><><><1>; and now escapes:a+ "...aaa,,," $x "$x" a+ "...aaa,,," \a "\a" a+ "...aaa,,," \f "\f" a+ "...aaa,,," \n "\n" a+ "...aaa,,," \r "\r" a+ "...aaa,,," \t "\t" a+ "...aaa,,," \v "\v" a+ "...aaa,,," \x21 "!" a+ "...aaa,,," \x{21} "!" a+ "...aaa,,," \c@ \0a+ "...aaa,,," \e \27a+ "...aaa,,," \0101 Aa+ "...aaa,,," (\0101) A- match_default normal REG_EXTENDED REG_STARTEND REG_MERGE format_sed format_no_copy(a+)(b+) ...aabb,, \0 aabb(a+)(b+) ...aabb,, \1 aa(a+)(b+) ...aabb,, \2 bb(a+)(b+) ...aabb,, & aabb(a+)(b+) ...aabb,, $ $(a+)(b+) ...aabb,, $1 $1(a+)(b+) ...aabb,, ()?: ()?:(a+)(b+) ...aabb,, \\ \\(a+)(b+) ...aabb,, \& &- match_default normal REG_EXTENDED REG_STARTEND REG_MERGE format_perl format_no_copy(a+)(b+) ...aabb,, $0 aabb(a+)(b+) ...aabb,, $1 aa(a+)(b+) ...aabb,, $2 bb(a+)(b+) ...aabb,, $& aabb(a+)(b+) ...aabb,, & &(a+)(b+) ...aabb,, \0 \0(a+)(b+) ...aabb,, ()?: ()?:- match_default normal REG_EXTENDED REG_STARTEND REG_MERGE; move to copying unmatched data:a+ "...aaa,,," bbb "...bbb,,," a+(b+) "...aaabb,,," $1 "...bb,,," a+(b+) "...aaabb,,,ab*abbb?" $1 "...bb,,,b*bbb?" (a+)|(b+) "...aaabb,,,ab*abbb?" (?1A)(?2B) "...AB,,,AB*AB?" (a+)|(b+) "...aaabb,,,ab*abbb?" ?1A:B "...AB,,,AB*AB?" (a+)|(b+) "...aaabb,,,ab*abbb?" (?1A:B)C "...ACBC,,,ACBC*ACBC?" (a+)|(b+) "...aaabb,,,ab*abbb?" ?1:B "...B,,,B*B?" - match_default normal REG_EXTENDED REG_STARTEND REG_MERGE format_first_only; move to copying unmatched data, but replace first occurance only:a+ "...aaa,,," bbb "...bbb,,," a+(b+) "...aaabb,,," $1 "...bb,,," a+(b+) "...aaabb,,,ab*abbb?" $1 "...bb,,,ab*abbb?" (a+)|(b+) "...aaabb,,,ab*abbb?" (?1A)(?2B) "...Abb,,,ab*abbb?" ;; changes to newline handling with 2.11:;- match_default normal REG_EXTENDED REG_STARTEND REG_GREP^. " \n \r\n " 0 1 3 4 7 8.$ " \n \r\n " 1 2 4 5 8 9- match_default normal REG_EXTENDED REG_STARTEND REG_GREP REG_UNICODE_ONLY^. " \8232 \8233 " 0 1 3 4 5 6.$ " \8232 \8233 " 1 2 3 4 6 7;; non-greedy repeats added 21/04/00- match_default normal REG_EXTENDEDa** !a*? aa 0 0a?? aa 0 0a++ !a+? aa 0 1a{1,3}{1} !a{1,3}? aaa 0 1\w+?w ...ccccccwcccccw 3 10\W+\w+?w ...ccccccwcccccw 0 10abc|\w+? abd 0 1abc|\w+? abcd 0 3<\s*tag[^>]*>(.*?)<\s*/tag\s*> " <tag>here is some text</tag> <tag></tag>" 1 29 6 23<\s*tag[^>]*>(.*?)<\s*/tag\s*> " < tag attr=\"something\">here is some text< /tag > <tag></tag>" 1 49 24 41;; non-marking parenthesis added 25/04/00- match_default normal REG_EXTENDED(?:abc)+ xxabcabcxx 2 8(?:a+)(b+) xaaabbbx 1 7 4 7(a+)(?:b+) xaaabbba 1 7 1 4(?:(a+)b+) xaaabbba 1 7 1 4(?:a+(b+)) xaaabbba 1 7 4 7a+(?#b+)b+ xaaabbba 1 7(a)(?:b|$) ab 0 2 0 1(a)(?:b|$) a 0 1 0 1;; try some partial matches:- match_partial match_default normal REG_EXTENDED REG_NO_POSIX_TEST(xyz)(.*)abc xyzaaab -1 -1 0 3 3 7(xyz)(.*)abc xyz -1 -1 0 3 3 3(xyz)(.*)abc xy -1 -1 -1 -1 -1 -1;; forward lookahead asserts added 21/01/02- match_default normal REG_EXTENDED REG_NO_POSIX_TEST((?:(?!a|b)\w)+)(\w+) " xxxabaxxx " 2 11 2 5 5 11/\*(?:(?!\*/).)*\*/ " /**/ " 2 6/\*(?:(?!\*/).)*\*/ " /***/ " 2 7/\*(?:(?!\*/).)*\*/ " /********/ " 2 12/\*(?:(?!\*/).)*\*/ " /* comment */ " 2 15<\s*a[^>]*>((?:(?!<\s*/\s*a\s*>).)*)<\s*/\s*a\s*> " <a href=\"here\">here</a> " 1 24 16 20<\s*a[^>]*>((?:(?!<\s*/\s*a\s*>).)*)<\s*/\s*a\s*> " <a href=\"here\">here< / a > " 1 28 16 20<\s*a[^>]*>((?:(?!<\s*/\s*a\s*>).)*)(?=<\s*/\s*a\s*>) " <a href=\"here\">here</a> " 1 20 16 20<\s*a[^>]*>((?:(?!<\s*/\s*a\s*>).)*)(?=<\s*/\s*a\s*>) " <a href=\"here\">here< / a > " 1 20 16 20; filename matching:^(?!^(?:PRN|AUX|CLOCK\$|NUL|CON|COM\d|LPT\d|\..*)(?:\..+)?$)[^\x00-\x1f\\?*:\"|/]+$ command.com 0 11^(?!^(?:PRN|AUX|CLOCK\$|NUL|CON|COM\d|LPT\d|\..*)(?:\..+)?$)[^\x00-\x1f\\?*:\"|/]+$ PRN -1 -1^(?!^(?:PRN|AUX|CLOCK\$|NUL|CON|COM\d|LPT\d|\..*)(?:\..+)?$)[^\x00-\x1f\\?*:\"|/]+$ COM2 -1 -1; password checking:^(?=.*\d).{4,8}$ abc3 0 4^(?=.*\d).{4,8}$ abc3def4 0 8^(?=.*\d).{4,8}$ ab2 -1 -1^(?=.*\d).{4,8}$ abcdefg -1 -1^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{4,8}$ abc3 -1 -1^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{4,8}$ abC3 0 4^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{4,8}$ ABCD3 -1 -1; new bugs detected in spring 2003:- normal match_continuous REG_NO_POSIX_TESTb abc -1 -1- normal REG_PERL(?!foo)bar foobar 3 6(?!foo)bar "??bar" 2 5(?!foo)bar "barfoo" 0 3(?!foo)bar "bar??" 0 3(?!foo)bar bar 0 3a\Z a\nb -1 -1() abc 0 0 0 0^() abc 0 0 0 0^()+ abc 0 0 0 0^(){1} abc 0 0 0 0^(){2} abc 0 0 0 0^((){2}) abc 0 0 0 0 0 0() "" 0 0 0 0()\1 "" 0 0 0 0()\1 a 0 0 0 0a()\1b ab 0 2 1 1a()b\1 ab 0 2 1 1- normal match_not_dot_newline REG_NO_POSIX_TEST"(.*\r\n){3}.* abcdefghijklmnopqrstuvwxyz.*\r\n" "00001 01 \r\n00002 02 1 2 3 4 5 6 7 8 9 0\r\n00003 03 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890\r\n00004 04 \r\n00005 05 \r\n00006 06 Seite: 0001\r\n00007 07 StartSeitEEnde: 0001\r\n00008 08 StartSeiTe Ende: 0001\r\n00009 09 Start seiteEnde: 0001\r\n00010 10 28.2.03\r\n00011 11 Page: 0001\r\n00012 12 Juhu die Erste: 0001\r\n00013 13 Es war einmal! 0001\r\n00014 14 ABCDEFGHIJKLMNOPQRSTUVWXYZ0001\r\n00015 15 abcdefghijklmnopqrstuvwxyz0001\r\n00016 16 lars.schmeiser@gft.com\r\n00017 17 \r\n00018 18 \r\n00019 19 \r\n00020 20 \r\n00021 21 1 2 3 4 5 6 7 8 9 0\r\n00022 22 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890\r\n00023 01 \r\n00024 02 1 2 3 4 5 6 7 8 9 0\r\n00025 03 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890\r\n00026 04 \r\n00027 05 \r\n00028 06 Seite: 0002\r\n00029 07 StartSeitEEnde: 0002\r\n00030 08 StartSeiTe Ende: 0002\r\n00031 09 Start seiteEnde: 0002\r\n00032 10 28.02.2003\r\n00033 11 Page: 0002\r\n00034 12 Juhu die Erste: 0002\r\n00035 13 Es war einmal! 0002\r\n00036 14 ABCDEFGHIJKLMNOPQRSTUVWXYZ0002\r\n00037 15 abcdefghijklmnopqrstuvwxyz0002\r\n00038 16 lars.schmeiser@194.1.12.111\r\n00039 17 \r\n00040 18 \r\n00041 19 \r\n00042 20 \r\n00043 21 1 2 3 4 5 6 7 8 9 0\r\n" 753 1076 934 1005
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -