| # This set of tests check the DFA matching functionality of pcre2_dfa_match(), |
| # excluding UTF and Unicode property support. All matches are done using DFA, |
| # forced by setting a default subject modifier at the start. |
| |
| #forbid_utf |
| #subject dfa |
| #newline_default lf anycrlf any |
| |
| /abc/ |
| abc |
| 0: abc |
| |
| /ab*c/ |
| abc |
| 0: abc |
| abbbbc |
| 0: abbbbc |
| ac |
| 0: ac |
| |
| /ab+c/ |
| abc |
| 0: abc |
| abbbbbbc |
| 0: abbbbbbc |
| \= Expect no match |
| ac |
| No match |
| ab |
| No match |
| |
| /a*/no_auto_possess |
| a |
| 0: a |
| 1: |
| aaaaaaaaaaaaaaaaa |
| Matched, but offsets vector is too small to show all matches |
| 0: aaaaaaaaaaaaaaaaa |
| 1: aaaaaaaaaaaaaaaa |
| 2: aaaaaaaaaaaaaaa |
| 3: aaaaaaaaaaaaaa |
| 4: aaaaaaaaaaaaa |
| 5: aaaaaaaaaaaa |
| 6: aaaaaaaaaaa |
| 7: aaaaaaaaaa |
| 8: aaaaaaaaa |
| 9: aaaaaaaa |
| 10: aaaaaaa |
| 11: aaaaaa |
| 12: aaaaa |
| 13: aaaa |
| 14: aaa |
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\=ovector=10 |
| Matched, but offsets vector is too small to show all matches |
| 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
| 1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
| 2: aaaaaaaaaaaaaaaaaaaaaaaaaaaa |
| 3: aaaaaaaaaaaaaaaaaaaaaaaaaaa |
| 4: aaaaaaaaaaaaaaaaaaaaaaaaaa |
| 5: aaaaaaaaaaaaaaaaaaaaaaaaa |
| 6: aaaaaaaaaaaaaaaaaaaaaaaa |
| 7: aaaaaaaaaaaaaaaaaaaaaaa |
| 8: aaaaaaaaaaaaaaaaaaaaaa |
| 9: aaaaaaaaaaaaaaaaaaaaa |
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\=dfa_shortest |
| 0: |
| |
| /(a|abcd|african)/ |
| a |
| 0: a |
| abcd |
| 0: abcd |
| 1: a |
| african |
| 0: african |
| 1: a |
| |
| /^abc/ |
| abcdef |
| 0: abc |
| \= Expect no match |
| xyzabc |
| No match |
| xyz\nabc |
| No match |
| |
| /^abc/m |
| abcdef |
| 0: abc |
| xyz\nabc |
| 0: abc |
| \= Expect no match |
| xyzabc |
| No match |
| |
| /\Aabc/ |
| abcdef |
| 0: abc |
| \= Expect no match |
| xyzabc |
| No match |
| xyz\nabc |
| No match |
| |
| /\Aabc/m |
| abcdef |
| 0: abc |
| \= Expect no match |
| xyzabc |
| No match |
| xyz\nabc |
| No match |
| |
| /\Gabc/ |
| abcdef |
| 0: abc |
| xyzabc\=offset=3 |
| 0: abc |
| \= Expect no match |
| xyzabc |
| No match |
| xyzabc\=offset=2 |
| No match |
| |
| /x\dy\Dz/ |
| x9yzz |
| 0: x9yzz |
| x0y+z |
| 0: x0y+z |
| \= Expect no match |
| xyz |
| No match |
| xxy0z |
| No match |
| |
| /x\sy\Sz/ |
| x yzz |
| 0: x yzz |
| x y+z |
| 0: x y+z |
| \= Expect no match |
| xyz |
| No match |
| xxyyz |
| No match |
| |
| /x\wy\Wz/ |
| xxy+z |
| 0: xxy+z |
| \= Expect no match |
| xxy0z |
| No match |
| x+y+z |
| No match |
| |
| /x.y/ |
| x+y |
| 0: x+y |
| x-y |
| 0: x-y |
| \= Expect no match |
| x\ny |
| No match |
| |
| /x.y/s |
| x+y |
| 0: x+y |
| x-y |
| 0: x-y |
| x\ny |
| 0: x\x0ay |
| |
| /(a.b(?s)c.d|x.y)p.q/ |
| a+bc+dp+q |
| 0: a+bc+dp+q |
| a+bc\ndp+q |
| 0: a+bc\x0adp+q |
| x\nyp+q |
| 0: x\x0ayp+q |
| \= Expect no match |
| a\nbc\ndp+q |
| No match |
| a+bc\ndp\nq |
| No match |
| x\nyp\nq |
| No match |
| |
| /a\d\z/ |
| ba0 |
| 0: a0 |
| \= Expect no match |
| ba0\n |
| No match |
| ba0\ncd |
| No match |
| |
| /a\d\z/m |
| ba0 |
| 0: a0 |
| \= Expect no match |
| ba0\n |
| No match |
| ba0\ncd |
| No match |
| |
| /a\d\Z/ |
| ba0 |
| 0: a0 |
| ba0\n |
| 0: a0 |
| \= Expect no match |
| ba0\ncd |
| No match |
| |
| /a\d\Z/m |
| ba0 |
| 0: a0 |
| ba0\n |
| 0: a0 |
| \= Expect no match |
| ba0\ncd |
| No match |
| |
| /a\d$/ |
| ba0 |
| 0: a0 |
| ba0\n |
| 0: a0 |
| \= Expect no match |
| ba0\ncd |
| No match |
| |
| /a\d$/m |
| ba0 |
| 0: a0 |
| ba0\n |
| 0: a0 |
| ba0\ncd |
| 0: a0 |
| |
| /abc/i |
| abc |
| 0: abc |
| aBc |
| 0: aBc |
| ABC |
| 0: ABC |
| |
| /[^a]/ |
| abcd |
| 0: b |
| |
| /ab?\w/ |
| abz |
| 0: abz |
| 1: ab |
| abbz |
| 0: abb |
| 1: ab |
| azz |
| 0: az |
| |
| /x{0,3}yz/ |
| ayzq |
| 0: yz |
| axyzq |
| 0: xyz |
| axxyz |
| 0: xxyz |
| axxxyzq |
| 0: xxxyz |
| axxxxyzq |
| 0: xxxyz |
| \= Expect no match |
| ax |
| No match |
| axx |
| No match |
| |
| /x{3}yz/ |
| axxxyzq |
| 0: xxxyz |
| axxxxyzq |
| 0: xxxyz |
| \= Expect no match |
| ax |
| No match |
| axx |
| No match |
| ayzq |
| No match |
| axyzq |
| No match |
| axxyz |
| No match |
| |
| /x{2,3}yz/ |
| axxyz |
| 0: xxyz |
| axxxyzq |
| 0: xxxyz |
| axxxxyzq |
| 0: xxxyz |
| \= Expect no match |
| ax |
| No match |
| axx |
| No match |
| ayzq |
| No match |
| axyzq |
| No match |
| |
| /[^a]+/no_auto_possess |
| bac |
| 0: b |
| bcdefax |
| 0: bcdef |
| 1: bcde |
| 2: bcd |
| 3: bc |
| 4: b |
| \= Expect no match |
| aaaaa |
| No match |
| |
| /[^a]*/no_auto_possess |
| bac |
| 0: b |
| 1: |
| bcdefax |
| 0: bcdef |
| 1: bcde |
| 2: bcd |
| 3: bc |
| 4: b |
| 5: |
| aaaaa |
| 0: |
| |
| /[^a]{3,5}/no_auto_possess |
| xyz |
| 0: xyz |
| awxyza |
| 0: wxyz |
| 1: wxy |
| abcdefa |
| 0: bcdef |
| 1: bcde |
| 2: bcd |
| abcdefghijk |
| 0: bcdef |
| 1: bcde |
| 2: bcd |
| \= Expect no match |
| axya |
| No match |
| axa |
| No match |
| aaaaa |
| No match |
| |
| /\d*/ |
| 1234b567 |
| 0: 1234 |
| xyz |
| 0: |
| |
| /\D*/ |
| a1234b567 |
| 0: a |
| xyz |
| 0: xyz |
| |
| /\d+/ |
| ab1234c56 |
| 0: 1234 |
| \= Expect no match |
| xyz |
| No match |
| |
| /\D+/ |
| ab123c56 |
| 0: ab |
| \= Expect no match |
| 789 |
| No match |
| |
| /\d?A/ |
| 045ABC |
| 0: 5A |
| ABC |
| 0: A |
| \= Expect no match |
| XYZ |
| No match |
| |
| /\D?A/ |
| ABC |
| 0: A |
| BAC |
| 0: BA |
| 9ABC |
| 0: A |
| |
| /a+/ |
| aaaa |
| 0: aaaa |
| |
| /^.*xyz/ |
| xyz |
| 0: xyz |
| ggggggggxyz |
| 0: ggggggggxyz |
| |
| /^.+xyz/ |
| abcdxyz |
| 0: abcdxyz |
| axyz |
| 0: axyz |
| \= Expect no match |
| xyz |
| No match |
| |
| /^.?xyz/ |
| xyz |
| 0: xyz |
| cxyz |
| 0: cxyz |
| |
| /^\d{2,3}X/ |
| 12X |
| 0: 12X |
| 123X |
| 0: 123X |
| \= Expect no match |
| X |
| No match |
| 1X |
| No match |
| 1234X |
| No match |
| |
| /^[abcd]\d/ |
| a45 |
| 0: a4 |
| b93 |
| 0: b9 |
| c99z |
| 0: c9 |
| d04 |
| 0: d0 |
| \= Expect no match |
| e45 |
| No match |
| abcd |
| No match |
| abcd1234 |
| No match |
| 1234 |
| No match |
| |
| /^[abcd]*\d/ |
| a45 |
| 0: a4 |
| b93 |
| 0: b9 |
| c99z |
| 0: c9 |
| d04 |
| 0: d0 |
| abcd1234 |
| 0: abcd1 |
| 1234 |
| 0: 1 |
| \= Expect no match |
| e45 |
| No match |
| abcd |
| No match |
| |
| /^[abcd]+\d/ |
| a45 |
| 0: a4 |
| b93 |
| 0: b9 |
| c99z |
| 0: c9 |
| d04 |
| 0: d0 |
| abcd1234 |
| 0: abcd1 |
| \= Expect no match |
| 1234 |
| No match |
| e45 |
| No match |
| abcd |
| No match |
| |
| /^a+X/ |
| aX |
| 0: aX |
| aaX |
| 0: aaX |
| |
| /^[abcd]?\d/ |
| a45 |
| 0: a4 |
| b93 |
| 0: b9 |
| c99z |
| 0: c9 |
| d04 |
| 0: d0 |
| 1234 |
| 0: 1 |
| \= Expect no match |
| abcd1234 |
| No match |
| e45 |
| No match |
| |
| /^[abcd]{2,3}\d/ |
| ab45 |
| 0: ab4 |
| bcd93 |
| 0: bcd9 |
| \= Expect no match |
| 1234 |
| No match |
| a36 |
| No match |
| abcd1234 |
| No match |
| ee45 |
| No match |
| |
| /^(abc)*\d/ |
| abc45 |
| 0: abc4 |
| abcabcabc45 |
| 0: abcabcabc4 |
| 42xyz |
| 0: 4 |
| |
| /^(abc)+\d/ |
| abc45 |
| 0: abc4 |
| abcabcabc45 |
| 0: abcabcabc4 |
| \= Expect no match |
| 42xyz |
| No match |
| |
| /^(abc)?\d/ |
| abc45 |
| 0: abc4 |
| 42xyz |
| 0: 4 |
| \= Expect no match |
| abcabcabc45 |
| No match |
| |
| /^(abc){2,3}\d/ |
| abcabc45 |
| 0: abcabc4 |
| abcabcabc45 |
| 0: abcabcabc4 |
| \= Expect no match |
| abcabcabcabc45 |
| No match |
| abc45 |
| No match |
| 42xyz |
| No match |
| |
| /1(abc|xyz)2(?1)3/ |
| 1abc2abc3456 |
| 0: 1abc2abc3 |
| 1abc2xyz3456 |
| 0: 1abc2xyz3 |
| |
| /^(a*\w|ab)=(a*\w|ab)/ |
| ab=ab |
| 0: ab=ab |
| 1: ab=a |
| |
| /^(a*\w|ab)=(?1)/ |
| ab=ab |
| 0: ab=ab |
| 1: ab=a |
| |
| /^([^()]|\((?1)*\))*$/ |
| abc |
| 0: abc |
| a(b)c |
| 0: a(b)c |
| a(b(c))d |
| 0: a(b(c))d |
| \= Expect no match) |
| a(b(c)d |
| No match |
| |
| /^>abc>([^()]|\((?1)*\))*<xyz<$/ |
| >abc>123<xyz< |
| 0: >abc>123<xyz< |
| >abc>1(2)3<xyz< |
| 0: >abc>1(2)3<xyz< |
| >abc>(1(2)3)<xyz< |
| 0: >abc>(1(2)3)<xyz< |
| |
| /^(?>a*)\d/ |
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9876 |
| 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9 |
| \= Expect no match |
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
| No match |
| |
| /< (?: (?(R) \d++ | [^<>]*+) | (?R)) * >/x |
| <> |
| 0: <> |
| <abcd> |
| 0: <abcd> |
| <abc <123> hij> |
| 0: <abc <123> hij> |
| <abc <def> hij> |
| 0: <def> |
| <abc<>def> |
| 0: <abc<>def> |
| <abc<> |
| 0: <> |
| \= Expect no match |
| <abc |
| No match |
| |
| /^(?(?=abc)\w{3}:|\d\d)$/ |
| abc: |
| 0: abc: |
| 12 |
| 0: 12 |
| \= Expect no match |
| 123 |
| No match |
| xyz |
| No match |
| |
| /^(?(?!abc)\d\d|\w{3}:)$/ |
| abc: |
| 0: abc: |
| 12 |
| 0: 12 |
| \= Expect no match |
| 123 |
| No match |
| xyz |
| No match |
| |
| /^(?=abc)\w{5}:$/ |
| abcde: |
| 0: abcde: |
| \= Expect no match |
| abc.. |
| No match |
| 123 |
| No match |
| vwxyz |
| No match |
| |
| /^(?!abc)\d\d$/ |
| 12 |
| 0: 12 |
| \= Expect no match |
| abcde: |
| No match |
| abc.. |
| No match |
| 123 |
| No match |
| vwxyz |
| No match |
| |
| /(?<=abc|xy)123/ |
| abc12345 |
| 0: 123 |
| wxy123z |
| 0: 123 |
| \= Expect no match |
| 123abc |
| No match |
| |
| /(?<!abc|xy)123/ |
| 123abc |
| 0: 123 |
| mno123456 |
| 0: 123 |
| \= Expect no match |
| abc12345 |
| No match |
| wxy123z |
| No match |
| |
| /abc(?C1)xyz/ |
| abcxyz |
| --->abcxyz |
| 1 ^ ^ x |
| 0: abcxyz |
| 123abcxyz999 |
| --->123abcxyz999 |
| 1 ^ ^ x |
| 0: abcxyz |
| |
| /(ab|cd){3,4}/auto_callout |
| ababab |
| --->ababab |
| +0 ^ ( |
| +1 ^ a |
| +4 ^ c |
| +2 ^^ b |
| +3 ^ ^ | |
| +1 ^ ^ a |
| +4 ^ ^ c |
| +2 ^ ^ b |
| +3 ^ ^ | |
| +1 ^ ^ a |
| +4 ^ ^ c |
| +2 ^ ^ b |
| +3 ^ ^ | |
| +12 ^ ^ End of pattern |
| +1 ^ ^ a |
| +4 ^ ^ c |
| 0: ababab |
| abcdabcd |
| --->abcdabcd |
| +0 ^ ( |
| +1 ^ a |
| +4 ^ c |
| +2 ^^ b |
| +3 ^ ^ | |
| +1 ^ ^ a |
| +4 ^ ^ c |
| +5 ^ ^ d |
| +6 ^ ^ ){3,4} |
| +1 ^ ^ a |
| +4 ^ ^ c |
| +2 ^ ^ b |
| +3 ^ ^ | |
| +12 ^ ^ End of pattern |
| +1 ^ ^ a |
| +4 ^ ^ c |
| +5 ^ ^ d |
| +6 ^ ^ ){3,4} |
| +12 ^ ^ End of pattern |
| 0: abcdabcd |
| 1: abcdab |
| abcdcdcdcdcd |
| --->abcdcdcdcdcd |
| +0 ^ ( |
| +1 ^ a |
| +4 ^ c |
| +2 ^^ b |
| +3 ^ ^ | |
| +1 ^ ^ a |
| +4 ^ ^ c |
| +5 ^ ^ d |
| +6 ^ ^ ){3,4} |
| +1 ^ ^ a |
| +4 ^ ^ c |
| +5 ^ ^ d |
| +6 ^ ^ ){3,4} |
| +12 ^ ^ End of pattern |
| +1 ^ ^ a |
| +4 ^ ^ c |
| +5 ^ ^ d |
| +6 ^ ^ ){3,4} |
| +12 ^ ^ End of pattern |
| 0: abcdcdcd |
| 1: abcdcd |
| |
| /^abc/ |
| abcdef |
| 0: abc |
| \= Expect no match |
| abcdef\=notbol |
| No match |
| |
| /^(a*|xyz)/ |
| bcd |
| 0: |
| aaabcd |
| 0: aaa |
| xyz |
| 0: xyz |
| 1: |
| xyz\=notempty |
| 0: xyz |
| \= Expect no match |
| bcd\=notempty |
| No match |
| |
| /xyz$/ |
| xyz |
| 0: xyz |
| xyz\n |
| 0: xyz |
| \= Expect no match |
| xyz\=noteol |
| No match |
| xyz\n\=noteol |
| No match |
| |
| /xyz$/m |
| xyz |
| 0: xyz |
| xyz\n |
| 0: xyz |
| abcxyz\npqr |
| 0: xyz |
| abcxyz\npqr\=noteol |
| 0: xyz |
| xyz\n\=noteol |
| 0: xyz |
| \= Expect no match |
| xyz\=noteol |
| No match |
| |
| /\Gabc/ |
| abcdef |
| 0: abc |
| defabcxyz\=offset=3 |
| 0: abc |
| \= Expect no match |
| defabcxyz |
| No match |
| |
| /^abcdef/ |
| ab\=ps |
| Partial match: ab |
| abcde\=ps |
| Partial match: abcde |
| abcdef\=ps |
| 0: abcdef |
| \= Expect no match |
| abx\=ps |
| No match |
| |
| /^a{2,4}\d+z/ |
| a\=ps |
| Partial match: a |
| aa\=ps |
| Partial match: aa |
| aa2\=ps |
| Partial match: aa2 |
| aaa\=ps |
| Partial match: aaa |
| aaa23\=ps |
| Partial match: aaa23 |
| aaaa12345\=ps |
| Partial match: aaaa12345 |
| aa0z\=ps |
| 0: aa0z |
| aaaa4444444444444z\=ps |
| 0: aaaa4444444444444z |
| \= Expect no match |
| az\=ps |
| No match |
| aaaaa\=ps |
| No match |
| a56\=ps |
| No match |
| |
| /^abcdef/ |
| abc\=ps |
| Partial match: abc |
| def\=dfa_restart |
| 0: def |
| |
| /(?<=foo)bar/ |
| foob\=ps,offset=2,allusedtext |
| Partial match: foob |
| <<< |
| foobar...\=ps,dfa_restart,offset=4 |
| 0: ar |
| foobar\=offset=2 |
| 0: bar |
| \= Expect no match |
| xyzfo\=ps |
| No match |
| obar\=dfa_restart |
| No match |
| |
| /(ab*(cd|ef))+X/ |
| lkjhlkjhlkjhlkjhabbbbbbcdaefabbbbbbbefa\=ps,notbol,noteol |
| Partial match: abbbbbbcdaefabbbbbbbefa |
| cdabbbbbbbb\=ps,notbol,dfa_restart,noteol |
| Partial match: cdabbbbbbbb |
| efabbbbbbbbbbbbbbbb\=ps,notbol,dfa_restart,noteol |
| Partial match: efabbbbbbbbbbbbbbbb |
| bbbbbbbbbbbbcdXyasdfadf\=ps,notbol,dfa_restart,noteol |
| 0: bbbbbbbbbbbbcdX |
| \= Expect no match |
| adfadadaklhlkalkajhlkjahdfasdfasdfladsfjkj\=ps,noteol |
| No match |
| |
| /the quick brown fox/ |
| the quick brown fox |
| 0: the quick brown fox |
| What do you know about the quick brown fox? |
| 0: the quick brown fox |
| \= Expect no match |
| The quick brown FOX |
| No match |
| What do you know about THE QUICK BROWN FOX? |
| No match |
| |
| /The quick brown fox/i |
| the quick brown fox |
| 0: the quick brown fox |
| The quick brown FOX |
| 0: The quick brown FOX |
| What do you know about the quick brown fox? |
| 0: the quick brown fox |
| What do you know about THE QUICK BROWN FOX? |
| 0: THE QUICK BROWN FOX |
| |
| /abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/ |
| abcd\t\n\r\f\a\e9;\$\\?caxyz |
| 0: abcd\x09\x0a\x0d\x0c\x07\x1b9;$\?caxyz |
| |
| /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/ |
| abxyzpqrrrabbxyyyypqAzz |
| 0: abxyzpqrrrabbxyyyypqAzz |
| abxyzpqrrrabbxyyyypqAzz |
| 0: abxyzpqrrrabbxyyyypqAzz |
| aabxyzpqrrrabbxyyyypqAzz |
| 0: aabxyzpqrrrabbxyyyypqAzz |
| aaabxyzpqrrrabbxyyyypqAzz |
| 0: aaabxyzpqrrrabbxyyyypqAzz |
| aaaabxyzpqrrrabbxyyyypqAzz |
| 0: aaaabxyzpqrrrabbxyyyypqAzz |
| abcxyzpqrrrabbxyyyypqAzz |
| 0: abcxyzpqrrrabbxyyyypqAzz |
| aabcxyzpqrrrabbxyyyypqAzz |
| 0: aabcxyzpqrrrabbxyyyypqAzz |
| aaabcxyzpqrrrabbxyyyypAzz |
| 0: aaabcxyzpqrrrabbxyyyypAzz |
| aaabcxyzpqrrrabbxyyyypqAzz |
| 0: aaabcxyzpqrrrabbxyyyypqAzz |
| aaabcxyzpqrrrabbxyyyypqqAzz |
| 0: aaabcxyzpqrrrabbxyyyypqqAzz |
| aaabcxyzpqrrrabbxyyyypqqqAzz |
| 0: aaabcxyzpqrrrabbxyyyypqqqAzz |
| aaabcxyzpqrrrabbxyyyypqqqqAzz |
| 0: aaabcxyzpqrrrabbxyyyypqqqqAzz |
| aaabcxyzpqrrrabbxyyyypqqqqqAzz |
| 0: aaabcxyzpqrrrabbxyyyypqqqqqAzz |
| aaabcxyzpqrrrabbxyyyypqqqqqqAzz |
| 0: aaabcxyzpqrrrabbxyyyypqqqqqqAzz |
| aaaabcxyzpqrrrabbxyyyypqAzz |
| 0: aaaabcxyzpqrrrabbxyyyypqAzz |
| abxyzzpqrrrabbxyyyypqAzz |
| 0: abxyzzpqrrrabbxyyyypqAzz |
| aabxyzzzpqrrrabbxyyyypqAzz |
| 0: aabxyzzzpqrrrabbxyyyypqAzz |
| aaabxyzzzzpqrrrabbxyyyypqAzz |
| 0: aaabxyzzzzpqrrrabbxyyyypqAzz |
| aaaabxyzzzzpqrrrabbxyyyypqAzz |
| 0: aaaabxyzzzzpqrrrabbxyyyypqAzz |
| abcxyzzpqrrrabbxyyyypqAzz |
| 0: abcxyzzpqrrrabbxyyyypqAzz |
| aabcxyzzzpqrrrabbxyyyypqAzz |
| 0: aabcxyzzzpqrrrabbxyyyypqAzz |
| aaabcxyzzzzpqrrrabbxyyyypqAzz |
| 0: aaabcxyzzzzpqrrrabbxyyyypqAzz |
| aaaabcxyzzzzpqrrrabbxyyyypqAzz |
| 0: aaaabcxyzzzzpqrrrabbxyyyypqAzz |
| aaaabcxyzzzzpqrrrabbbxyyyypqAzz |
| 0: aaaabcxyzzzzpqrrrabbbxyyyypqAzz |
| aaaabcxyzzzzpqrrrabbbxyyyyypqAzz |
| 0: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz |
| aaabcxyzpqrrrabbxyyyypABzz |
| 0: aaabcxyzpqrrrabbxyyyypABzz |
| aaabcxyzpqrrrabbxyyyypABBzz |
| 0: aaabcxyzpqrrrabbxyyyypABBzz |
| >>>aaabxyzpqrrrabbxyyyypqAzz |
| 0: aaabxyzpqrrrabbxyyyypqAzz |
| >aaaabxyzpqrrrabbxyyyypqAzz |
| 0: aaaabxyzpqrrrabbxyyyypqAzz |
| >>>>abcxyzpqrrrabbxyyyypqAzz |
| 0: abcxyzpqrrrabbxyyyypqAzz |
| \= Expect no match |
| abxyzpqrrabbxyyyypqAzz |
| No match |
| abxyzpqrrrrabbxyyyypqAzz |
| No match |
| abxyzpqrrrabxyyyypqAzz |
| No match |
| aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz |
| No match |
| aaaabcxyzzzzpqrrrabbbxyyypqAzz |
| No match |
| aaabcxyzpqrrrabbxyyyypqqqqqqqAzz |
| No match |
| |
| /^(abc){1,2}zz/ |
| abczz |
| 0: abczz |
| abcabczz |
| 0: abcabczz |
| \= Expect no match |
| zz |
| No match |
| abcabcabczz |
| No match |
| >>abczz |
| No match |
| |
| /^(b+?|a){1,2}?c/ |
| bc |
| 0: bc |
| bbc |
| 0: bbc |
| bbbc |
| 0: bbbc |
| bac |
| 0: bac |
| bbac |
| 0: bbac |
| aac |
| 0: aac |
| abbbbbbbbbbbc |
| 0: abbbbbbbbbbbc |
| bbbbbbbbbbbac |
| 0: bbbbbbbbbbbac |
| \= Expect no match |
| aaac |
| No match |
| abbbbbbbbbbbac |
| No match |
| |
| /^(b+|a){1,2}c/ |
| bc |
| 0: bc |
| bbc |
| 0: bbc |
| bbbc |
| 0: bbbc |
| bac |
| 0: bac |
| bbac |
| 0: bbac |
| aac |
| 0: aac |
| abbbbbbbbbbbc |
| 0: abbbbbbbbbbbc |
| bbbbbbbbbbbac |
| 0: bbbbbbbbbbbac |
| \= Expect no match |
| aaac |
| No match |
| abbbbbbbbbbbac |
| No match |
| |
| /^(b+|a){1,2}?bc/ |
| bbc |
| 0: bbc |
| |
| /^(b*|ba){1,2}?bc/ |
| babc |
| 0: babc |
| bbabc |
| 0: bbabc |
| bababc |
| 0: bababc |
| \= Expect no match |
| bababbc |
| No match |
| babababc |
| No match |
| |
| /^(ba|b*){1,2}?bc/ |
| babc |
| 0: babc |
| bbabc |
| 0: bbabc |
| bababc |
| 0: bababc |
| \= Expect no match |
| bababbc |
| No match |
| babababc |
| No match |
| |
| /^\ca\cA\c[\c{\c:/ |
| \x01\x01\e;z |
| 0: \x01\x01\x1b;z |
| |
| /^[ab\]cde]/ |
| athing |
| 0: a |
| bthing |
| 0: b |
| ]thing |
| 0: ] |
| cthing |
| 0: c |
| dthing |
| 0: d |
| ething |
| 0: e |
| \= Expect no match |
| fthing |
| No match |
| [thing |
| No match |
| \\thing |
| No match |
| |
| /^[]cde]/ |
| ]thing |
| 0: ] |
| cthing |
| 0: c |
| dthing |
| 0: d |
| ething |
| 0: e |
| \= Expect no match |
| athing |
| No match |
| fthing |
| No match |
| |
| /^[^ab\]cde]/ |
| fthing |
| 0: f |
| [thing |
| 0: [ |
| \\thing |
| 0: \ |
| \= Expect no match |
| athing |
| No match |
| bthing |
| No match |
| ]thing |
| No match |
| cthing |
| No match |
| dthing |
| No match |
| ething |
| No match |
| |
| /^[^]cde]/ |
| athing |
| 0: a |
| fthing |
| 0: f |
| \= Expect no match |
| ]thing |
| No match |
| cthing |
| No match |
| dthing |
| No match |
| ething |
| No match |
| |
| /^\/ |
| |
| 0: \x81 |
| |
| /^ÿ/ |
| ÿ |
| 0: \xff |
| |
| /^[0-9]+$/ |
| 0 |
| 0: 0 |
| 1 |
| 0: 1 |
| 2 |
| 0: 2 |
| 3 |
| 0: 3 |
| 4 |
| 0: 4 |
| 5 |
| 0: 5 |
| 6 |
| 0: 6 |
| 7 |
| 0: 7 |
| 8 |
| 0: 8 |
| 9 |
| 0: 9 |
| 10 |
| 0: 10 |
| 100 |
| 0: 100 |
| \= Expect no match |
| abc |
| No match |
| |
| /^.*nter/ |
| enter |
| 0: enter |
| inter |
| 0: inter |
| uponter |
| 0: uponter |
| |
| /^xxx[0-9]+$/ |
| xxx0 |
| 0: xxx0 |
| xxx1234 |
| 0: xxx1234 |
| \= Expect no match |
| xxx |
| No match |
| |
| /^.+[0-9][0-9][0-9]$/ |
| x123 |
| 0: x123 |
| xx123 |
| 0: xx123 |
| 123456 |
| 0: 123456 |
| x1234 |
| 0: x1234 |
| \= Expect no match |
| 123 |
| No match |
| |
| /^.+?[0-9][0-9][0-9]$/ |
| x123 |
| 0: x123 |
| xx123 |
| 0: xx123 |
| 123456 |
| 0: 123456 |
| x1234 |
| 0: x1234 |
| \= Expect no match |
| 123 |
| No match |
| |
| /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/ |
| abc!pqr=apquxz.ixr.zzz.ac.uk |
| 0: abc!pqr=apquxz.ixr.zzz.ac.uk |
| \= Expect no match |
| !pqr=apquxz.ixr.zzz.ac.uk |
| No match |
| abc!=apquxz.ixr.zzz.ac.uk |
| No match |
| abc!pqr=apquxz:ixr.zzz.ac.uk |
| No match |
| abc!pqr=apquxz.ixr.zzz.ac.ukk |
| No match |
| |
| /:/ |
| Well, we need a colon: somewhere |
| 0: : |
| \= Expect no match |
| No match without a colon |
| No match |
| |
| /([\da-f:]+)$/i |
| 0abc |
| 0: 0abc |
| abc |
| 0: abc |
| fed |
| 0: fed |
| E |
| 0: E |
| :: |
| 0: :: |
| 5f03:12C0::932e |
| 0: 5f03:12C0::932e |
| fed def |
| 0: def |
| Any old stuff |
| 0: ff |
| \= Expect no match |
| 0zzz |
| No match |
| gzzz |
| No match |
| fed\x20 |
| No match |
| Any old rubbish |
| No match |
| |
| /^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/ |
| .1.2.3 |
| 0: .1.2.3 |
| A.12.123.0 |
| 0: A.12.123.0 |
| \= Expect no match |
| .1.2.3333 |
| No match |
| 1.2.3 |
| No match |
| 1234.2.3 |
| No match |
| |
| /^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/ |
| 1 IN SOA non-sp1 non-sp2( |
| 0: 1 IN SOA non-sp1 non-sp2( |
| 1 IN SOA non-sp1 non-sp2 ( |
| 0: 1 IN SOA non-sp1 non-sp2 ( |
| \= Expect no match |
| 1IN SOA non-sp1 non-sp2( |
| No match |
| |
| /^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/ |
| a. |
| 0: a. |
| Z. |
| 0: Z. |
| 2. |
| 0: 2. |
| ab-c.pq-r. |
| 0: ab-c.pq-r. |
| sxk.zzz.ac.uk. |
| 0: sxk.zzz.ac.uk. |
| x-.y-. |
| 0: x-.y-. |
| \= Expect no match |
| -abc.peq. |
| No match |
| |
| /^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/ |
| *.a |
| 0: *.a |
| *.b0-a |
| 0: *.b0-a |
| *.c3-b.c |
| 0: *.c3-b.c |
| *.c-a.b-c |
| 0: *.c-a.b-c |
| \= Expect no match |
| *.0 |
| No match |
| *.a- |
| No match |
| *.a-b.c- |
| No match |
| *.c-a.0-c |
| No match |
| |
| /^(?=ab(de))(abd)(e)/ |
| abde |
| 0: abde |
| |
| /^(?!(ab)de|x)(abd)(f)/ |
| abdf |
| 0: abdf |
| |
| /^(?=(ab(cd)))(ab)/ |
| abcd |
| 0: ab |
| |
| /^[\da-f](\.[\da-f])*$/i |
| a.b.c.d |
| 0: a.b.c.d |
| A.B.C.D |
| 0: A.B.C.D |
| a.b.c.1.2.3.C |
| 0: a.b.c.1.2.3.C |
| |
| /^\".*\"\s*(;.*)?$/ |
| \"1234\" |
| 0: "1234" |
| \"abcd\" ; |
| 0: "abcd" ; |
| \"\" ; rhubarb |
| 0: "" ; rhubarb |
| \= Expect no match |
| \"1234\" : things |
| No match |
| |
| /^$/ |
| \ |
| 0: |
| |
| / ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/x |
| ab c |
| 0: ab c |
| \= Expect no match |
| abc |
| No match |
| ab cde |
| No match |
| |
| /(?x) ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/ |
| ab c |
| 0: ab c |
| \= Expect no match |
| abc |
| No match |
| ab cde |
| No match |
| |
| /^ a\ b[c ]d $/x |
| a bcd |
| 0: a bcd |
| a b d |
| 0: a b d |
| \= Expect no match |
| abcd |
| No match |
| ab d |
| No match |
| |
| /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/ |
| abcdefhijklm |
| 0: abcdefhijklm |
| |
| /^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/ |
| abcdefhijklm |
| 0: abcdefhijklm |
| |
| /^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/ |
| a+ Z0+\x08\n\x1d\x12 |
| 0: a+ Z0+\x08\x0a\x1d\x12 |
| |
| /^[.^$|()*+?{,}]+/ |
| .^\$(*+)|{?,?} |
| 0: .^$(*+)|{?,?} |
| |
| /^a*\w/ |
| z |
| 0: z |
| az |
| 0: az |
| 1: a |
| aaaz |
| 0: aaaz |
| 1: aaa |
| 2: aa |
| 3: a |
| a |
| 0: a |
| aa |
| 0: aa |
| 1: a |
| aaaa |
| 0: aaaa |
| 1: aaa |
| 2: aa |
| 3: a |
| a+ |
| 0: a |
| aa+ |
| 0: aa |
| 1: a |
| |
| /^a*?\w/ |
| z |
| 0: z |
| az |
| 0: az |
| 1: a |
| aaaz |
| 0: aaaz |
| 1: aaa |
| 2: aa |
| 3: a |
| a |
| 0: a |
| aa |
| 0: aa |
| 1: a |
| aaaa |
| 0: aaaa |
| 1: aaa |
| 2: aa |
| 3: a |
| a+ |
| 0: a |
| aa+ |
| 0: aa |
| 1: a |
| |
| /^a+\w/ |
| az |
| 0: az |
| aaaz |
| 0: aaaz |
| 1: aaa |
| 2: aa |
| aa |
| 0: aa |
| aaaa |
| 0: aaaa |
| 1: aaa |
| 2: aa |
| aa+ |
| 0: aa |
| |
| /^a+?\w/ |
| az |
| 0: az |
| aaaz |
| 0: aaaz |
| 1: aaa |
| 2: aa |
| aa |
| 0: aa |
| aaaa |
| 0: aaaa |
| 1: aaa |
| 2: aa |
| aa+ |
| 0: aa |
| |
| /^\d{8}\w{2,}/ |
| 1234567890 |
| 0: 1234567890 |
| 12345678ab |
| 0: 12345678ab |
| 12345678__ |
| 0: 12345678__ |
| \= Expect no match |
| 1234567 |
| No match |
| |
| /^[aeiou\d]{4,5}$/ |
| uoie |
| 0: uoie |
| 1234 |
| 0: 1234 |
| 12345 |
| 0: 12345 |
| aaaaa |
| 0: aaaaa |
| \= Expect no match |
| 123456 |
| No match |
| |
| /^[aeiou\d]{4,5}?/ |
| uoie |
| 0: uoie |
| 1234 |
| 0: 1234 |
| 12345 |
| 0: 12345 |
| 1: 1234 |
| aaaaa |
| 0: aaaaa |
| 1: aaaa |
| 123456 |
| 0: 12345 |
| 1: 1234 |
| |
| /^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]/ |
| From abcd Mon Sep 01 12:33:02 1997 |
| 0: From abcd Mon Sep 01 12:33 |
| |
| /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/ |
| From abcd Mon Sep 01 12:33:02 1997 |
| 0: From abcd Mon Sep 01 12:33 |
| From abcd Mon Sep 1 12:33:02 1997 |
| 0: From abcd Mon Sep 1 12:33 |
| \= Expect no match |
| From abcd Sep 01 12:33:02 1997 |
| No match |
| |
| /^12.34/s |
| 12\n34 |
| 0: 12\x0a34 |
| 12\r34 |
| 0: 12\x0d34 |
| |
| /\w+(?=\t)/ |
| the quick brown\t fox |
| 0: brown |
| |
| /foo(?!bar)(.*)/ |
| foobar is foolish see? |
| 0: foolish see? |
| |
| /(?:(?!foo)...|^.{0,2})bar(.*)/ |
| foobar crowbar etc |
| 0: rowbar etc |
| barrel |
| 0: barrel |
| 2barrel |
| 0: 2barrel |
| A barrel |
| 0: A barrel |
| |
| /^(\D*)(?=\d)(?!123)/ |
| abc456 |
| 0: abc |
| \= Expect no match |
| abc123 |
| No match |
| |
| /^1234(?# test newlines |
| inside)/ |
| 1234 |
| 0: 1234 |
| |
| /^1234 #comment in extended re |
| /x |
| 1234 |
| 0: 1234 |
| |
| /#rhubarb |
| abcd/x |
| abcd |
| 0: abcd |
| |
| /^abcd#rhubarb/x |
| abcd |
| 0: abcd |
| |
| /(?!^)abc/ |
| the abc |
| 0: abc |
| \= Expect no match |
| abc |
| No match |
| |
| /(?=^)abc/ |
| abc |
| 0: abc |
| \= Expect no match |
| the abc |
| No match |
| |
| /^[ab]{1,3}(ab*|b)/no_auto_possess |
| aabbbbb |
| 0: aabbbbb |
| 1: aabbbb |
| 2: aabbb |
| 3: aabb |
| 4: aab |
| 5: aa |
| |
| /^[ab]{1,3}?(ab*|b)/no_auto_possess |
| aabbbbb |
| 0: aabbbbb |
| 1: aabbbb |
| 2: aabbb |
| 3: aabb |
| 4: aab |
| 5: aa |
| |
| /^[ab]{1,3}?(ab*?|b)/no_auto_possess |
| aabbbbb |
| 0: aabbbbb |
| 1: aabbbb |
| 2: aabbb |
| 3: aabb |
| 4: aab |
| 5: aa |
| |
| /^[ab]{1,3}(ab*?|b)/no_auto_possess |
| aabbbbb |
| 0: aabbbbb |
| 1: aabbbb |
| 2: aabbb |
| 3: aabb |
| 4: aab |
| 5: aa |
| |
| / (?: [\040\t] | \( |
| (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
| \) )* # optional leading comment |
| (?: (?: |
| [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
| (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
| | |
| " (?: # opening quote... |
| [^\\\x80-\xff\n\015"] # Anything except backslash and quote |
| | # or |
| \\ [^\x80-\xff] # Escaped something (something != CR) |
| )* " # closing quote |
| ) # initial word |
| (?: (?: [\040\t] | \( |
| (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
| \) )* \. (?: [\040\t] | \( |
| (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
| \) )* (?: |
| [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
| (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
| | |
| " (?: # opening quote... |
| [^\\\x80-\xff\n\015"] # Anything except backslash and quote |
| | # or |
| \\ [^\x80-\xff] # Escaped something (something != CR) |
| )* " # closing quote |
| ) )* # further okay, if led by a period |
| (?: [\040\t] | \( |
| (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
| \) )* @ (?: [\040\t] | \( |
| (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
| \) )* (?: |
| [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
| (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
| | \[ # [ |
| (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff |
| \] # ] |
| ) # initial subdomain |
| (?: # |
| (?: [\040\t] | \( |
| (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
| \) )* \. # if led by a period... |
| (?: [\040\t] | \( |
| (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
| \) )* (?: |
| [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
| (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
| | \[ # [ |
| (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff |
| \] # ] |
| ) # ...further okay |
| )* |
| # address |
| | # or |
| (?: |
| [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
| (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
| | |
| " (?: # opening quote... |
| [^\\\x80-\xff\n\015"] # Anything except backslash and quote |
| | # or |
| \\ [^\x80-\xff] # Escaped something (something != CR) |
| )* " # closing quote |
| ) # one word, optionally followed by.... |
| (?: |
| [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or... |
| \( |
| (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
| \) | # comments, or... |
| |
| " (?: # opening quote... |
| [^\\\x80-\xff\n\015"] # Anything except backslash and quote |
| | # or |
| \\ [^\x80-\xff] # Escaped something (something != CR) |
| )* " # closing quote |
| # quoted strings |
| )* |
| < (?: [\040\t] | \( |
| (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
| \) )* # leading < |
| (?: @ (?: [\040\t] | \( |
| (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
| \) )* (?: |
| [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
| (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
| | \[ # [ |
| (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff |
| \] # ] |
| ) # initial subdomain |
| (?: # |
| (?: [\040\t] | \( |
| (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
| \) )* \. # if led by a period... |
| (?: [\040\t] | \( |
| (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
| \) )* (?: |
| [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
| (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
| | \[ # [ |
| (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff |
| \] # ] |
| ) # ...further okay |
| )* |
| |
| (?: (?: [\040\t] | \( |
| (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
| \) )* , (?: [\040\t] | \( |
| (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
| \) )* @ (?: [\040\t] | \( |
| (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
| \) )* (?: |
| [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
| (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
| | \[ # [ |
| (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff |
| \] # ] |
| ) # initial subdomain |
| (?: # |
| (?: [\040\t] | \( |
| (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
| \) )* \. # if led by a period... |
| (?: [\040\t] | \( |
| (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
| \) )* (?: |
| [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
| (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
| | \[ # [ |
| (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff |
| \] # ] |
| ) # ...further okay |
| )* |
| )* # further okay, if led by comma |
| : # closing colon |
| (?: [\040\t] | \( |
| (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
| \) )* )? # optional route |
| (?: |
| [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
| (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
| | |
| " (?: # opening quote... |
| [^\\\x80-\xff\n\015"] # Anything except backslash and quote |
| | # or |
| \\ [^\x80-\xff] # Escaped something (something != CR) |
| )* " # closing quote |
| ) # initial word |
| (?: (?: [\040\t] | \( |
| (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
| \) )* \. (?: [\040\t] | \( |
| (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
| \) )* (?: |
| [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
| (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
| | |
| " (?: # opening quote... |
| [^\\\x80-\xff\n\015"] # Anything except backslash and quote |
| | # or |
| \\ [^\x80-\xff] # Escaped something (something != CR) |
| )* " # closing quote |
| ) )* # further okay, if led by a period |
| (?: [\040\t] | \( |
| (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
| \) )* @ (?: [\040\t] | \( |
| (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
| \) )* (?: |
| [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
| (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
| | \[ # [ |
| (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff |
| \] # ] |
| ) # initial subdomain |
| (?: # |
| (?: [\040\t] | \( |
| (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
| \) )* \. # if led by a period... |
| (?: [\040\t] | \( |
| (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
| \) )* (?: |
| [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
| (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
| | \[ # [ |
| (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff |
| \] # ] |
| ) # ...further okay |
| )* |
| # address spec |
| (?: [\040\t] | \( |
| (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
| \) )* > # trailing > |
| # name and address |
| ) (?: [\040\t] | \( |
| (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
| \) )* # optional trailing comment |
| /x |
| Alan Other <user\@dom.ain> |
| 0: Alan Other <user@dom.ain> |
| <user\@dom.ain> |
| 0: user@dom.ain |
| 1: user@dom |
| user\@dom.ain |
| 0: user@dom.ain |
| 1: user@dom |
| \"A. Other\" <user.1234\@dom.ain> (a comment) |
| 0: "A. Other" <user.1234@dom.ain> (a comment) |
| 1: "A. Other" <user.1234@dom.ain> |
| 2: "A. Other" <user.1234@dom.ain> |
| A. Other <user.1234\@dom.ain> (a comment) |
| 0: Other <user.1234@dom.ain> (a comment) |
| 1: Other <user.1234@dom.ain> |
| 2: Other <user.1234@dom.ain> |
| \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay |
| 0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay |
| 1: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re |
| A missing angle <user\@some.where |
| 0: user@some.where |
| 1: user@some |
| \= Expect no match |
| The quick brown fox |
| No match |
| |
| /[\040\t]* # Nab whitespace. |
| (?: |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: # ( |
| (?: \\ [^\x80-\xff] | |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* |
| \) # ) |
| ) # special |
| [^\\\x80-\xff\n\015()] * # normal* |
| )* # )* |
| \) # ) |
| [\040\t]* )* # If comment found, allow more spaces. |
| # optional leading comment |
| (?: |
| (?: |
| [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
| (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
| # Atom |
| | # or |
| " # " |
| [^\\\x80-\xff\n\015"] * # normal |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* |
| " # " |
| # Quoted string |
| ) |
| [\040\t]* # Nab whitespace. |
| (?: |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: # ( |
| (?: \\ [^\x80-\xff] | |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* |
| \) # ) |
| ) # special |
| [^\\\x80-\xff\n\015()] * # normal* |
| )* # )* |
| \) # ) |
| [\040\t]* )* # If comment found, allow more spaces. |
| (?: |
| \. |
| [\040\t]* # Nab whitespace. |
| (?: |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: # ( |
| (?: \\ [^\x80-\xff] | |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* |
| \) # ) |
| ) # special |
| [^\\\x80-\xff\n\015()] * # normal* |
| )* # )* |
| \) # ) |
| [\040\t]* )* # If comment found, allow more spaces. |
| (?: |
| [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
| (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
| # Atom |
| | # or |
| " # " |
| [^\\\x80-\xff\n\015"] * # normal |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* |
| " # " |
| # Quoted string |
| ) |
| [\040\t]* # Nab whitespace. |
| (?: |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: # ( |
| (?: \\ [^\x80-\xff] | |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* |
| \) # ) |
| ) # special |
| [^\\\x80-\xff\n\015()] * # normal* |
| )* # )* |
| \) # ) |
| [\040\t]* )* # If comment found, allow more spaces. |
| # additional words |
| )* |
| @ |
| [\040\t]* # Nab whitespace. |
| (?: |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: # ( |
| (?: \\ [^\x80-\xff] | |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* |
| \) # ) |
| ) # special |
| [^\\\x80-\xff\n\015()] * # normal* |
| )* # )* |
| \) # ) |
| [\040\t]* )* # If comment found, allow more spaces. |
| (?: |
| [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
| (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
| | |
| \[ # [ |
| (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff |
| \] # ] |
| ) |
| [\040\t]* # Nab whitespace. |
| (?: |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: # ( |
| (?: \\ [^\x80-\xff] | |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* |
| \) # ) |
| ) # special |
| [^\\\x80-\xff\n\015()] * # normal* |
| )* # )* |
| \) # ) |
| [\040\t]* )* # If comment found, allow more spaces. |
| # optional trailing comments |
| (?: |
| \. |
| [\040\t]* # Nab whitespace. |
| (?: |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: # ( |
| (?: \\ [^\x80-\xff] | |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* |
| \) # ) |
| ) # special |
| [^\\\x80-\xff\n\015()] * # normal* |
| )* # )* |
| \) # ) |
| [\040\t]* )* # If comment found, allow more spaces. |
| (?: |
| [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
| (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
| | |
| \[ # [ |
| (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff |
| \] # ] |
| ) |
| [\040\t]* # Nab whitespace. |
| (?: |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: # ( |
| (?: \\ [^\x80-\xff] | |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* |
| \) # ) |
| ) # special |
| [^\\\x80-\xff\n\015()] * # normal* |
| )* # )* |
| \) # ) |
| [\040\t]* )* # If comment found, allow more spaces. |
| # optional trailing comments |
| )* |
| # address |
| | # or |
| (?: |
| [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
| (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
| # Atom |
| | # or |
| " # " |
| [^\\\x80-\xff\n\015"] * # normal |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* |
| " # " |
| # Quoted string |
| ) |
| # leading word |
| [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # "normal" atoms and or spaces |
| (?: |
| (?: |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: # ( |
| (?: \\ [^\x80-\xff] | |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* |
| \) # ) |
| ) # special |
| [^\\\x80-\xff\n\015()] * # normal* |
| )* # )* |
| \) # ) |
| | |
| " # " |
| [^\\\x80-\xff\n\015"] * # normal |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* |
| " # " |
| ) # "special" comment or quoted string |
| [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # more "normal" |
| )* |
| < |
| [\040\t]* # Nab whitespace. |
| (?: |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: # ( |
| (?: \\ [^\x80-\xff] | |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* |
| \) # ) |
| ) # special |
| [^\\\x80-\xff\n\015()] * # normal* |
| )* # )* |
| \) # ) |
| [\040\t]* )* # If comment found, allow more spaces. |
| # < |
| (?: |
| @ |
| [\040\t]* # Nab whitespace. |
| (?: |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: # ( |
| (?: \\ [^\x80-\xff] | |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* |
| \) # ) |
| ) # special |
| [^\\\x80-\xff\n\015()] * # normal* |
| )* # )* |
| \) # ) |
| [\040\t]* )* # If comment found, allow more spaces. |
| (?: |
| [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
| (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
| | |
| \[ # [ |
| (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff |
| \] # ] |
| ) |
| [\040\t]* # Nab whitespace. |
| (?: |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: # ( |
| (?: \\ [^\x80-\xff] | |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* |
| \) # ) |
| ) # special |
| [^\\\x80-\xff\n\015()] * # normal* |
| )* # )* |
| \) # ) |
| [\040\t]* )* # If comment found, allow more spaces. |
| # optional trailing comments |
| (?: |
| \. |
| [\040\t]* # Nab whitespace. |
| (?: |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: # ( |
| (?: \\ [^\x80-\xff] | |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* |
| \) # ) |
| ) # special |
| [^\\\x80-\xff\n\015()] * # normal* |
| )* # )* |
| \) # ) |
| [\040\t]* )* # If comment found, allow more spaces. |
| (?: |
| [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
| (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
| | |
| \[ # [ |
| (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff |
| \] # ] |
| ) |
| [\040\t]* # Nab whitespace. |
| (?: |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: # ( |
| (?: \\ [^\x80-\xff] | |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* |
| \) # ) |
| ) # special |
| [^\\\x80-\xff\n\015()] * # normal* |
| )* # )* |
| \) # ) |
| [\040\t]* )* # If comment found, allow more spaces. |
| # optional trailing comments |
| )* |
| (?: , |
| [\040\t]* # Nab whitespace. |
| (?: |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: # ( |
| (?: \\ [^\x80-\xff] | |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* |
| \) # ) |
| ) # special |
| [^\\\x80-\xff\n\015()] * # normal* |
| )* # )* |
| \) # ) |
| [\040\t]* )* # If comment found, allow more spaces. |
| @ |
| [\040\t]* # Nab whitespace. |
| (?: |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: # ( |
| (?: \\ [^\x80-\xff] | |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* |
| \) # ) |
| ) # special |
| [^\\\x80-\xff\n\015()] * # normal* |
| )* # )* |
| \) # ) |
| [\040\t]* )* # If comment found, allow more spaces. |
| (?: |
| [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
| (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
| | |
| \[ # [ |
| (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff |
| \] # ] |
| ) |
| [\040\t]* # Nab whitespace. |
| (?: |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: # ( |
| (?: \\ [^\x80-\xff] | |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* |
| \) # ) |
| ) # special |
| [^\\\x80-\xff\n\015()] * # normal* |
| )* # )* |
| \) # ) |
| [\040\t]* )* # If comment found, allow more spaces. |
| # optional trailing comments |
| (?: |
| \. |
| [\040\t]* # Nab whitespace. |
| (?: |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: # ( |
| (?: \\ [^\x80-\xff] | |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* |
| \) # ) |
| ) # special |
| [^\\\x80-\xff\n\015()] * # normal* |
| )* # )* |
| \) # ) |
| [\040\t]* )* # If comment found, allow more spaces. |
| (?: |
| [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
| (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
| | |
| \[ # [ |
| (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff |
| \] # ] |
| ) |
| [\040\t]* # Nab whitespace. |
| (?: |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: # ( |
| (?: \\ [^\x80-\xff] | |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* |
| \) # ) |
| ) # special |
| [^\\\x80-\xff\n\015()] * # normal* |
| )* # )* |
| \) # ) |
| [\040\t]* )* # If comment found, allow more spaces. |
| # optional trailing comments |
| )* |
| )* # additional domains |
| : |
| [\040\t]* # Nab whitespace. |
| (?: |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: # ( |
| (?: \\ [^\x80-\xff] | |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* |
| \) # ) |
| ) # special |
| [^\\\x80-\xff\n\015()] * # normal* |
| )* # )* |
| \) # ) |
| [\040\t]* )* # If comment found, allow more spaces. |
| # optional trailing comments |
| )? # optional route |
| (?: |
| [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
| (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
| # Atom |
| | # or |
| " # " |
| [^\\\x80-\xff\n\015"] * # normal |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* |
| " # " |
| # Quoted string |
| ) |
| [\040\t]* # Nab whitespace. |
| (?: |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: # ( |
| (?: \\ [^\x80-\xff] | |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* |
| \) # ) |
| ) # special |
| [^\\\x80-\xff\n\015()] * # normal* |
| )* # )* |
| \) # ) |
| [\040\t]* )* # If comment found, allow more spaces. |
| (?: |
| \. |
| [\040\t]* # Nab whitespace. |
| (?: |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: # ( |
| (?: \\ [^\x80-\xff] | |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* |
| \) # ) |
| ) # special |
| [^\\\x80-\xff\n\015()] * # normal* |
| )* # )* |
| \) # ) |
| [\040\t]* )* # If comment found, allow more spaces. |
| (?: |
| [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
| (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
| # Atom |
| | # or |
| " # " |
| [^\\\x80-\xff\n\015"] * # normal |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* |
| " # " |
| # Quoted string |
| ) |
| [\040\t]* # Nab whitespace. |
| (?: |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: # ( |
| (?: \\ [^\x80-\xff] | |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* |
| \) # ) |
| ) # special |
| [^\\\x80-\xff\n\015()] * # normal* |
| )* # )* |
| \) # ) |
| [\040\t]* )* # If comment found, allow more spaces. |
| # additional words |
| )* |
| @ |
| [\040\t]* # Nab whitespace. |
| (?: |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: # ( |
| (?: \\ [^\x80-\xff] | |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* |
| \) # ) |
| ) # special |
| [^\\\x80-\xff\n\015()] * # normal* |
| )* # )* |
| \) # ) |
| [\040\t]* )* # If comment found, allow more spaces. |
| (?: |
| [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
| (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
| | |
| \[ # [ |
| (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff |
| \] # ] |
| ) |
| [\040\t]* # Nab whitespace. |
| (?: |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: # ( |
| (?: \\ [^\x80-\xff] | |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* |
| \) # ) |
| ) # special |
| [^\\\x80-\xff\n\015()] * # normal* |
| )* # )* |
| \) # ) |
| [\040\t]* )* # If comment found, allow more spaces. |
| # optional trailing comments |
| (?: |
| \. |
| [\040\t]* # Nab whitespace. |
| (?: |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: # ( |
| (?: \\ [^\x80-\xff] | |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* |
| \) # ) |
| ) # special |
| [^\\\x80-\xff\n\015()] * # normal* |
| )* # )* |
| \) # ) |
| [\040\t]* )* # If comment found, allow more spaces. |
| (?: |
| [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
| (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
| | |
| \[ # [ |
| (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff |
| \] # ] |
| ) |
| [\040\t]* # Nab whitespace. |
| (?: |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: # ( |
| (?: \\ [^\x80-\xff] | |
| \( # ( |
| [^\\\x80-\xff\n\015()] * # normal* |
| (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* |
| \) # ) |
| ) # special |
| [^\\\x80-\xff\n\015()] * # normal* |
| )* # )* |
| \) # ) |
| [\040\t]* )* # If comment found, allow more spaces. |
| # optional trailing comments |
| )* |
| # address spec |
| > # > |
| # name and address |
| ) |
| /x |
| Alan Other <user\@dom.ain> |
| 0: Alan Other <user@dom.ain> |
| <user\@dom.ain> |
| 0: user@dom.ain |
| 1: user@dom |
| user\@dom.ain |
| 0: user@dom.ain |
| 1: user@dom |
| \"A. Other\" <user.1234\@dom.ain> (a comment) |
| 0: "A. Other" <user.1234@dom.ain> |
| A. Other <user.1234\@dom.ain> (a comment) |
| 0: Other <user.1234@dom.ain> |
| \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay |
| 0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay |
| 1: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re |
| A missing angle <user\@some.where |
| 0: user@some.where |
| 1: user@some |
| \= Expect no match |
| The quick brown fox |
| No match |
| |
| /abc\0def\00pqr\000xyz\0000AB/ |
| abc\0def\00pqr\000xyz\0000AB |
| 0: abc\x00def\x00pqr\x00xyz\x000AB |
| abc456 abc\0def\00pqr\000xyz\0000ABCDE |
| 0: abc\x00def\x00pqr\x00xyz\x000AB |
| |
| /abc\x0def\x00pqr\x000xyz\x0000AB/ |
| abc\x0def\x00pqr\x000xyz\x0000AB |
| 0: abc\x0def\x00pqr\x000xyz\x0000AB |
| abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE |
| 0: abc\x0def\x00pqr\x000xyz\x0000AB |
| |
| /^[\000-\037]/ |
| \0A |
| 0: \x00 |
| \01B |
| 0: \x01 |
| \037C |
| 0: \x1f |
| |
| /\0*/ |
| \0\0\0\0 |
| 0: \x00\x00\x00\x00 |
| |
| /A\x0{2,3}Z/ |
| The A\x0\x0Z |
| 0: A\x00\x00Z |
| An A\0\x0\0Z |
| 0: A\x00\x00\x00Z |
| \= Expect no match |
| A\0Z |
| No match |
| A\0\x0\0\x0Z |
| No match |
| |
| /^\s/ |
| \040abc |
| 0: |
| \x0cabc |
| 0: \x0c |
| \nabc |
| 0: \x0a |
| \rabc |
| 0: \x0d |
| \tabc |
| 0: \x09 |
| \= Expect no match |
| abc |
| No match |
| |
| /^a b |
| c/x |
| abc |
| 0: abc |
| |
| /ab{1,3}bc/ |
| abbbbc |
| 0: abbbbc |
| abbbc |
| 0: abbbc |
| abbc |
| 0: abbc |
| \= Expect no match |
| abc |
| No match |
| abbbbbc |
| No match |
| |
| /([^.]*)\.([^:]*):[T ]+(.*)/ |
| track1.title:TBlah blah blah |
| 0: track1.title:TBlah blah blah |
| |
| /([^.]*)\.([^:]*):[T ]+(.*)/i |
| track1.title:TBlah blah blah |
| 0: track1.title:TBlah blah blah |
| |
| /([^.]*)\.([^:]*):[t ]+(.*)/i |
| track1.title:TBlah blah blah |
| 0: track1.title:TBlah blah blah |
| |
| /^[W-c]+$/ |
| WXY_^abc |
| 0: WXY_^abc |
| \= Expect no match |
| wxy |
| No match |
| |
| /^[W-c]+$/i |
| WXY_^abc |
| 0: WXY_^abc |
| wxy_^ABC |
| 0: wxy_^ABC |
| |
| /^[\x3f-\x5F]+$/i |
| WXY_^abc |
| 0: WXY_^abc |
| wxy_^ABC |
| 0: wxy_^ABC |
| |
| /^abc$/m |
| abc |
| 0: abc |
| qqq\nabc |
| 0: abc |
| abc\nzzz |
| 0: abc |
| qqq\nabc\nzzz |
| 0: abc |
| |
| /^abc$/ |
| abc |
| 0: abc |
| \= Expect no match |
| qqq\nabc |
| No match |
| abc\nzzz |
| No match |
| qqq\nabc\nzzz |
| No match |
| |
| /\Aabc\Z/m |
| abc |
| 0: abc |
| abc\n |
| 0: abc |
| \= Expect no match |
| qqq\nabc |
| No match |
| abc\nzzz |
| No match |
| qqq\nabc\nzzz |
| No match |
| |
| /\A(.)*\Z/s |
| abc\ndef |
| 0: abc\x0adef |
| |
| /\A(.)*\Z/m |
| \= Expect no match |
| abc\ndef |
| No match |
| |
| /(?:b)|(?::+)/ |
| b::c |
| 0: b |
| c::b |
| 0: :: |
| |
| /[-az]+/ |
| az- |
| 0: az- |
| \= Expect no match |
| b |
| No match |
| |
| /[az-]+/ |
| za- |
| 0: za- |
| \= Expect no match |
| b |
| No match |
| |
| /[a\-z]+/ |
| a-z |
| 0: a-z |
| \= Expect no match |
| b |
| No match |
| |
| /[a-z]+/ |
| abcdxyz |
| 0: abcdxyz |
| |
| /[\d-]+/ |
| 12-34 |
| 0: 12-34 |
| \= Expect no match |
| aaa |
| No match |
| |
| /\x5c/ |
| \\ |
| 0: \ |
| |
| /\x20Z/ |
| the Zoo |
| 0: Z |
| \= Expect no match |
| Zulu |
| No match |
| |
| /ab{3cd/ |
| ab{3cd |
| 0: ab{3cd |
| |
| /ab{3,cd/ |
| ab{3,cd |
| 0: ab{3,cd |
| |
| /ab{3,4a}cd/ |
| ab{3,4a}cd |
| 0: ab{3,4a}cd |
| |
| /{4,5a}bc/ |
| {4,5a}bc |
| 0: {4,5a}bc |
| |
| /^a.b/newline=lf |
| a\rb |
| 0: a\x0db |
| \= Expect no match |
| a\nb |
| No match |
| |
| /abc$/ |
| abc |
| 0: abc |
| abc\n |
| 0: abc |
| \= Expect no match |
| abc\ndef |
| No match |
| |
| /(abc)\123/ |
| abc\x53 |
| 0: abcS |
| |
| /(abc)\223/ |
| abc\x93 |
| 0: abc\x93 |
| |
| /(abc)\323/ |
| abc\xd3 |
| 0: abc\xd3 |
| |
| /(abc)\100/ |
| abc\x40 |
| 0: abc@ |
| abc\100 |
| 0: abc@ |
| |
| /(abc)\1000/ |
| abc\x400 |
| 0: abc@0 |
| abc\x40\x30 |
| 0: abc@0 |
| abc\1000 |
| 0: abc@0 |
| abc\100\x30 |
| 0: abc@0 |
| abc\100\060 |
| 0: abc@0 |
| abc\100\60 |
| 0: abc@0 |
| |
| /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/ |
| abcdefghijk\12S |
| 0: abcdefghijk\x0aS |
| |
| /a{0}bc/ |
| bc |
| 0: bc |
| |
| /(a|(bc)){0,0}?xyz/ |
| xyz |
| 0: xyz |
| |
| /abc[\10]de/ |
| abc\010de |
| 0: abc\x08de |
| |
| /abc[\1]de/ |
| abc\1de |
| 0: abc\x01de |
| |
| /(abc)[\1]de/ |
| abc\1de |
| 0: abc\x01de |
| |
| /(?s)a.b/ |
| a\nb |
| 0: a\x0ab |
| |
| /^([^a])([^\b])([^c]*)([^d]{3,4})/ |
| baNOTccccd |
| 0: baNOTcccc |
| 1: baNOTccc |
| 2: baNOTcc |
| 3: baNOTc |
| baNOTcccd |
| 0: baNOTccc |
| 1: baNOTcc |
| 2: baNOTc |
| baNOTccd |
| 0: baNOTcc |
| 1: baNOTc |
| bacccd |
| 0: baccc |
| \= Expect no match |
| anything |
| No match |
| b\bc |
| No match |
| baccd |
| No match |
| |
| /[^a]/ |
| Abc |
| 0: A |
| |
| /[^a]/i |
| Abc |
| 0: b |
| |
| /[^a]+/ |
| AAAaAbc |
| 0: AAA |
| |
| /[^a]+/i |
| AAAaAbc |
| 0: bc |
| |
| /[^a]+/ |
| bbb\nccc |
| 0: bbb\x0accc |
| |
| /[^k]$/ |
| abc |
| 0: c |
| \= Expect no match |
| abk |
| No match |
| |
| /[^k]{2,3}$/ |
| abc |
| 0: abc |
| kbc |
| 0: bc |
| kabc |
| 0: abc |
| \= Expect no match |
| abk |
| No match |
| akb |
| No match |
| akk |
| No match |
| |
| /^\d{8,}\@.+[^k]$/ |
| 12345678\@a.b.c.d |
| 0: 12345678@a.b.c.d |
| 123456789\@x.y.z |
| 0: 123456789@x.y.z |
| \= Expect no match |
| 12345678\@x.y.uk |
| No match |
| 1234567\@a.b.c.d |
| No match |
| |
| /[^a]/ |
| aaaabcd |
| 0: b |
| aaAabcd |
| 0: A |
| |
| /[^a]/i |
| aaaabcd |
| 0: b |
| aaAabcd |
| 0: b |
| |
| /[^az]/ |
| aaaabcd |
| 0: b |
| aaAabcd |
| 0: A |
| |
| /[^az]/i |
| aaaabcd |
| 0: b |
| aaAabcd |
| 0: b |
| |
| /\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377/ |
| \000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377 |
| 0: \x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff |
| |
| /P[^*]TAIRE[^*]{1,6}?LL/ |
| xxxxxxxxxxxPSTAIREISLLxxxxxxxxx |
| 0: PSTAIREISLL |
| |
| /P[^*]TAIRE[^*]{1,}?LL/ |
| xxxxxxxxxxxPSTAIREISLLxxxxxxxxx |
| 0: PSTAIREISLL |
| |
| /(\.\d\d[1-9]?)\d+/ |
| 1.230003938 |
| 0: .230003938 |
| 1.875000282 |
| 0: .875000282 |
| 1.235 |
| 0: .235 |
| |
| /(\.\d\d((?=0)|\d(?=\d)))/ |
| 1.230003938 |
| 0: .230 |
| 1: .23 |
| 1.875000282 |
| 0: .875 |
| \= Expect no match |
| 1.235 |
| No match |
| |
| /a(?)b/ |
| ab |
| 0: ab |
| |
| /\b(foo)\s+(\w+)/i |
| Food is on the foo table |
| 0: foo table |
| |
| /foo(.*)bar/ |
| The food is under the bar in the barn. |
| 0: food is under the bar in the bar |
| 1: food is under the bar |
| |
| /foo(.*?)bar/ |
| The food is under the bar in the barn. |
| 0: food is under the bar in the bar |
| 1: food is under the bar |
| |
| /(.*)(\d*)/no_auto_possess |
| I have 2 numbers: 53147 |
| Matched, but offsets vector is too small to show all matches |
| 0: I have 2 numbers: 53147 |
| 1: I have 2 numbers: 5314 |
| 2: I have 2 numbers: 531 |
| 3: I have 2 numbers: 53 |
| 4: I have 2 numbers: 5 |
| 5: I have 2 numbers: |
| 6: I have 2 numbers: |
| 7: I have 2 numbers |
| 8: I have 2 number |
| 9: I have 2 numbe |
| 10: I have 2 numb |
| 11: I have 2 num |
| 12: I have 2 nu |
| 13: I have 2 n |
| 14: I have 2 |
| |
| /(.*)(\d+)/ |
| I have 2 numbers: 53147 |
| 0: I have 2 numbers: 53147 |
| 1: I have 2 |
| |
| /(.*?)(\d*)/no_auto_possess |
| I have 2 numbers: 53147 |
| Matched, but offsets vector is too small to show all matches |
| 0: I have 2 numbers: 53147 |
| 1: I have 2 numbers: 5314 |
| 2: I have 2 numbers: 531 |
| 3: I have 2 numbers: 53 |
| 4: I have 2 numbers: 5 |
| 5: I have 2 numbers: |
| 6: I have 2 numbers: |
| 7: I have 2 numbers |
| 8: I have 2 number |
| 9: I have 2 numbe |
| 10: I have 2 numb |
| 11: I have 2 num |
| 12: I have 2 nu |
| 13: I have 2 n |
| 14: I have 2 |
| |
| /(.*?)(\d+)/ |
| I have 2 numbers: 53147 |
| 0: I have 2 numbers: 53147 |
| 1: I have 2 |
| |
| /(.*)(\d+)$/ |
| I have 2 numbers: 53147 |
| 0: I have 2 numbers: 53147 |
| |
| /(.*?)(\d+)$/ |
| I have 2 numbers: 53147 |
| 0: I have 2 numbers: 53147 |
| |
| /(.*)\b(\d+)$/ |
| I have 2 numbers: 53147 |
| 0: I have 2 numbers: 53147 |
| |
| /(.*\D)(\d+)$/ |
| I have 2 numbers: 53147 |
| 0: I have 2 numbers: 53147 |
| |
| /^\D*(?!123)/ |
| ABC123 |
| 0: AB |
| 1: A |
| 2: |
| |
| /^(\D*)(?=\d)(?!123)/ |
| ABC445 |
| 0: ABC |
| \= Expect no match |
| ABC123 |
| No match |
| |
| /^[W-]46]/ |
| W46]789 |
| 0: W46] |
| -46]789 |
| 0: -46] |
| \= Expect no match |
| Wall |
| No match |
| Zebra |
| No match |
| 42 |
| No match |
| [abcd] |
| No match |
| ]abcd[ |
| No match |
| |
| /^[W-\]46]/ |
| W46]789 |
| 0: W |
| Wall |
| 0: W |
| Zebra |
| 0: Z |
| Xylophone |
| 0: X |
| 42 |
| 0: 4 |
| [abcd] |
| 0: [ |
| ]abcd[ |
| 0: ] |
| \\backslash |
| 0: \ |
| \= Expect no match |
| -46]789 |
| No match |
| well |
| No match |
| |
| /\d\d\/\d\d\/\d\d\d\d/ |
| 01/01/2000 |
| 0: 01/01/2000 |
| |
| /word (?:[a-zA-Z0-9]+ ){0,10}otherword/ |
| word cat dog elephant mussel cow horse canary baboon snake shark otherword |
| 0: word cat dog elephant mussel cow horse canary baboon snake shark otherword |
| \= Expect no match |
| word cat dog elephant mussel cow horse canary baboon snake shark |
| No match |
| |
| /word (?:[a-zA-Z0-9]+ ){0,300}otherword/ |
| \= Expect no match |
| word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope |
| No match |
| |
| /^(a){0,0}/ |
| bcd |
| 0: |
| abc |
| 0: |
| aab |
| 0: |
| |
| /^(a){0,1}/ |
| bcd |
| 0: |
| abc |
| 0: a |
| 1: |
| aab |
| 0: a |
| 1: |
| |
| /^(a){0,2}/ |
| bcd |
| 0: |
| abc |
| 0: a |
| 1: |
| aab |
| 0: aa |
| 1: a |
| 2: |
| |
| /^(a){0,3}/ |
| bcd |
| 0: |
| abc |
| 0: a |
| 1: |
| aab |
| 0: aa |
| 1: a |
| 2: |
| aaa |
| 0: aaa |
| 1: aa |
| 2: a |
| 3: |
| |
| /^(a){0,}/ |
| bcd |
| 0: |
| abc |
| 0: a |
| 1: |
| aab |
| 0: aa |
| 1: a |
| 2: |
| aaa |
| 0: aaa |
| 1: aa |
| 2: a |
| 3: |
| aaaaaaaa |
| 0: aaaaaaaa |
| 1: aaaaaaa |
| 2: aaaaaa |
| 3: aaaaa |
| 4: aaaa |
| 5: aaa |
| 6: aa |
| 7: a |
| 8: |
| |
| /^(a){1,1}/ |
| abc |
| 0: a |
| aab |
| 0: a |
| \= Expect no match |
| bcd |
| No match |
| |
| /^(a){1,2}/ |
| abc |
| 0: a |
| aab |
| 0: aa |
| 1: a |
| \= Expect no match |
| bcd |
| No match |
| |
| /^(a){1,3}/ |
| abc |
| 0: a |
| aab |
| 0: aa |
| 1: a |
| aaa |
| 0: aaa |
| 1: aa |
| 2: a |
| \= Expect no match |
| bcd |
| No match |
| |
| /^(a){1,}/ |
| abc |
| 0: a |
| aab |
| 0: aa |
| 1: a |
| aaa |
| 0: aaa |
| 1: aa |
| 2: a |
| aaaaaaaa |
| 0: aaaaaaaa |
| 1: aaaaaaa |
| 2: aaaaaa |
| 3: aaaaa |
| 4: aaaa |
| 5: aaa |
| 6: aa |
| 7: a |
| \= Expect no match |
| bcd |
| No match |
| |
| /.*\.gif/ |
| borfle\nbib.gif\nno |
| 0: bib.gif |
| |
| /.{0,}\.gif/ |
| borfle\nbib.gif\nno |
| 0: bib.gif |
| |
| /.*\.gif/m |
| borfle\nbib.gif\nno |
| 0: bib.gif |
| |
| /.*\.gif/s |
| borfle\nbib.gif\nno |
| 0: borfle\x0abib.gif |
| |
| /.*\.gif/ms |
| borfle\nbib.gif\nno |
| 0: borfle\x0abib.gif |
| |
| /.*$/ |
| borfle\nbib.gif\nno |
| 0: no |
| |
| /.*$/m |
| borfle\nbib.gif\nno |
| 0: borfle |
| |
| /.*$/s |
| borfle\nbib.gif\nno |
| 0: borfle\x0abib.gif\x0ano |
| |
| /.*$/ms |
| borfle\nbib.gif\nno |
| 0: borfle\x0abib.gif\x0ano |
| 1: borfle\x0abib.gif |
| 2: borfle |
| |
| /.*$/ |
| borfle\nbib.gif\nno\n |
| 0: no |
| |
| /.*$/m |
| borfle\nbib.gif\nno\n |
| 0: borfle |
| |
| /.*$/s |
| borfle\nbib.gif\nno\n |
| 0: borfle\x0abib.gif\x0ano\x0a |
| 1: borfle\x0abib.gif\x0ano |
| |
| /.*$/ms |
| borfle\nbib.gif\nno\n |
| 0: borfle\x0abib.gif\x0ano\x0a |
| 1: borfle\x0abib.gif\x0ano |
| 2: borfle\x0abib.gif |
| 3: borfle |
| |
| /(.*X|^B)/ |
| abcde\n1234Xyz |
| 0: 1234X |
| BarFoo |
| 0: B |
| \= Expect no match |
| abcde\nBar |
| No match |
| |
| /(.*X|^B)/m |
| abcde\n1234Xyz |
| 0: 1234X |
| BarFoo |
| 0: B |
| abcde\nBar |
| 0: B |
| |
| /(.*X|^B)/s |
| abcde\n1234Xyz |
| 0: abcde\x0a1234X |
| BarFoo |
| 0: B |
| \= Expect no match |
| abcde\nBar |
| No match |
| |
| /(.*X|^B)/ms |
| abcde\n1234Xyz |
| 0: abcde\x0a1234X |
| BarFoo |
| 0: B |
| abcde\nBar |
| 0: B |
| |
| /(?s)(.*X|^B)/ |
| abcde\n1234Xyz |
| 0: abcde\x0a1234X |
| BarFoo |
| 0: B |
| \= Expect no match |
| abcde\nBar |
| No match |
| |
| /(?s:.*X|^B)/ |
| abcde\n1234Xyz |
| 0: abcde\x0a1234X |
| BarFoo |
| 0: B |
| \= Expect no match |
| abcde\nBar |
| No match |
| |
| /^.*B/ |
| \= Expect no match |
| abc\nB |
| No match |
| |
| /(?s)^.*B/ |
| abc\nB |
| 0: abc\x0aB |
| |
| /(?m)^.*B/ |
| abc\nB |
| 0: B |
| |
| /(?ms)^.*B/ |
| abc\nB |
| 0: abc\x0aB |
| |
| /(?ms)^B/ |
| abc\nB |
| 0: B |
| |
| /(?s)B$/ |
| B\n |
| 0: B |
| |
| /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/ |
| 123456654321 |
| 0: 123456654321 |
| |
| /^\d\d\d\d\d\d\d\d\d\d\d\d/ |
| 123456654321 |
| 0: 123456654321 |
| |
| /^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/ |
| 123456654321 |
| 0: 123456654321 |
| |
| /^[abc]{12}/ |
| abcabcabcabc |
| 0: abcabcabcabc |
| |
| /^[a-c]{12}/ |
| abcabcabcabc |
| 0: abcabcabcabc |
| |
| /^(a|b|c){12}/ |
| abcabcabcabc |
| 0: abcabcabcabc |
| |
| /^[abcdefghijklmnopqrstuvwxy0123456789]/ |
| n |
| 0: n |
| \= Expect no match |
| z |
| No match |
| |
| /abcde{0,0}/ |
| abcd |
| 0: abcd |
| \= Expect no match |
| abce |
| No match |
| |
| /ab[cd]{0,0}e/ |
| abe |
| 0: abe |
| \= Expect no match |
| abcde |
| No match |
| |
| /ab(c){0,0}d/ |
| abd |
| 0: abd |
| \= Expect no match |
| abcd |
| No match |
| |
| /a(b*)/ |
| a |
| 0: a |
| ab |
| 0: ab |
| abbbb |
| 0: abbbb |
| \= Expect no match |
| bbbbb |
| No match |
| |
| /ab\d{0}e/ |
| abe |
| 0: abe |
| \= Expect no match |
| ab1e |
| No match |
| |
| /"([^\\"]+|\\.)*"/ |
| the \"quick\" brown fox |
| 0: "quick" |
| \"the \\\"quick\\\" brown fox\" |
| 0: "the \"quick\" brown fox" |
| |
| /.*?/g,aftertext |
| abc |
| 0: abc |
| 0+ |
| 1: ab |
| 2: a |
| 3: |
| 0: |
| 0+ |
| |
| /\b/g,aftertext |
| abc |
| 0: |
| 0+ abc |
| 0: |
| 0+ |
| |
| /\b/g,aftertext |
| abc |
| 0: |
| 0+ abc |
| 0: |
| 0+ |
| |
| //g |
| abc |
| 0: |
| 0: |
| 0: |
| 0: |
| |
| /<tr([\w\W\s\d][^<>]{0,})><TD([\w\W\s\d][^<>]{0,})>([\d]{0,}\.)(.*)((<BR>([\w\W\s\d][^<>]{0,})|[\s]{0,}))<\/a><\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><\/TR>/is |
| <TR BGCOLOR='#DBE9E9'><TD align=left valign=top>43.<a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)</a></TD><TD align=left valign=top>Lega lstaff.com</TD><TD align=left valign=top>CA - Statewide</TD></TR> |
| 0: <TR BGCOLOR='#DBE9E9'><TD align=left valign=top>43.<a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)</a></TD><TD align=left valign=top>Lega lstaff.com</TD><TD align=left valign=top>CA - Statewide</TD></TR> |
| |
| /a[^a]b/ |
| acb |
| 0: acb |
| a\nb |
| 0: a\x0ab |
| |
| /a.b/ |
| acb |
| 0: acb |
| \= Expect no match |
| a\nb |
| No match |
| |
| /a[^a]b/s |
| acb |
| 0: acb |
| a\nb |
| 0: a\x0ab |
| |
| /a.b/s |
| acb |
| 0: acb |
| a\nb |
| 0: a\x0ab |
| |
| /^(b+?|a){1,2}?c/ |
| bac |
| 0: bac |
| bbac |
| 0: bbac |
| bbbac |
| 0: bbbac |
| bbbbac |
| 0: bbbbac |
| bbbbbac |
| 0: bbbbbac |
| |
| /^(b+|a){1,2}?c/ |
| bac |
| 0: bac |
| bbac |
| 0: bbac |
| bbbac |
| 0: bbbac |
| bbbbac |
| 0: bbbbac |
| bbbbbac |
| 0: bbbbbac |
| |
| /(?!\A)x/m |
| a\bx\n |
| 0: x |
| \= Expect no match |
| x\nb\n |
| No match |
| |
| /\x0{ab}/ |
| \0{ab} |
| 0: \x00{ab} |
| |
| /(A|B)*?CD/ |
| CD |
| 0: CD |
| |
| /(A|B)*CD/ |
| CD |
| 0: CD |
| |
| /(?<!bar)foo/ |
| foo |
| 0: foo |
| catfood |
| 0: foo |
| arfootle |
| 0: foo |
| rfoosh |
| 0: foo |
| \= Expect no match |
| barfoo |
| No match |
| towbarfoo |
| No match |
| |
| /\w{3}(?<!bar)foo/ |
| catfood |
| 0: catfoo |
| \= Expect no match |
| foo |
| No match |
| barfoo |
| No match |
| towbarfoo |
| No match |
| |
| /(?<=(foo)a)bar/ |
| fooabar |
| 0: bar |
| \= Expect no match |
| bar |
| No match |
| foobbar |
| No match |
| |
| /\Aabc\z/m |
| abc |
| 0: abc |
| \= Expect no match |
| abc\n |
| No match |
| qqq\nabc |
| No match |
| abc\nzzz |
| No match |
| qqq\nabc\nzzz |
| No match |
| |
| "(?>.*/)foo" |
| \= Expect no match |
| /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/ |
| No match |
| |
| "(?>.*/)foo" |
| /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo |
| 0: /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo |
| |
| /(?>(\.\d\d[1-9]?))\d+/ |
| 1.230003938 |
| 0: .230003938 |
| 1.875000282 |
| 0: .875000282 |
| \= Expect no match |
| 1.235 |
| No match |
| |
| /^((?>\w+)|(?>\s+))*$/ |
| now is the time for all good men to come to the aid of the party |
| 0: now is the time for all good men to come to the aid of the party |
| \= Expect no match |
| this is not a line with only words and spaces! |
| No match |
| |
| /(\d+)(\w)/ |
| 12345a |
| 0: 12345a |
| 1: 12345 |
| 2: 1234 |
| 3: 123 |
| 4: 12 |
| 12345+ |
| 0: 12345 |
| 1: 1234 |
| 2: 123 |
| 3: 12 |
| |
| /((?>\d+))(\w)/ |
| 12345a |
| 0: 12345a |
| \= Expect no match |
| 12345+ |
| No match |
| |
| /(?>a+)b/ |
| aaab |
| 0: aaab |
| |
| /((?>a+)b)/ |
| aaab |
| 0: aaab |
| |
| /(?>(a+))b/ |
| aaab |
| 0: aaab |
| |
| /(?>b)+/ |
| aaabbbccc |
| 0: bbb |
| 1: bb |
| 2: b |
| |
| /(?>a+|b+|c+)*c/ |
| aaabbbbccccd |
| 0: aaabbbbcccc |
| 1: aaabbbbc |
| |
| /(a+|b+|c+)*c/ |
| aaabbbbccccd |
| 0: aaabbbbcccc |
| 1: aaabbbbccc |
| 2: aaabbbbcc |
| 3: aaabbbbc |
| |
| /((?>[^()]+)|\([^()]*\))+/ |
| ((abc(ade)ufh()()x |
| 0: abc(ade)ufh()()x |
| 1: abc(ade)ufh()() |
| 2: abc(ade)ufh() |
| 3: abc(ade)ufh |
| 4: abc(ade) |
| 5: abc |
| |
| /\(((?>[^()]+)|\([^()]+\))+\)/ |
| (abc) |
| 0: (abc) |
| (abc(def)xyz) |
| 0: (abc(def)xyz) |
| \= Expect no match |
| ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
| No match |
| |
| /a(?-i)b/i |
| ab |
| 0: ab |
| Ab |
| 0: Ab |
| \= Expect no match |
| aB |
| No match |
| AB |
| No match |
| |
| /(a (?x)b c)d e/ |
| a bcd e |
| 0: a bcd e |
| \= Expect no match |
| a b cd e |
| No match |
| abcd e |
| No match |
| a bcde |
| No match |
| |
| /(a b(?x)c d (?-x)e f)/ |
| a bcde f |
| 0: a bcde f |
| \= Expect no match |
| abcdef |
| No match |
| |
| /(a(?i)b)c/ |
| abc |
| 0: abc |
| aBc |
| 0: aBc |
| \= Expect no match |
| abC |
| No match |
| aBC |
| No match |
| Abc |
| No match |
| ABc |
| No match |
| ABC |
| No match |
| AbC |
| No match |
| |
| /a(?i:b)c/ |
| abc |
| 0: abc |
| aBc |
| 0: aBc |
| \= Expect no match |
| ABC |
| No match |
| abC |
| No match |
| aBC |
| No match |
| |
| /a(?i:b)*c/ |
| aBc |
| 0: aBc |
| aBBc |
| 0: aBBc |
| \= Expect no match |
| aBC |
| No match |
| aBBC |
| No match |
| |
| /a(?=b(?i)c)\w\wd/ |
| abcd |
| 0: abcd |
| abCd |
| 0: abCd |
| \= Expect no match |
| aBCd |
| No match |
| abcD |
| No match |
| |
| /(?s-i:more.*than).*million/i |
| more than million |
| 0: more than million |
| more than MILLION |
| 0: more than MILLION |
| more \n than Million |
| 0: more \x0a than Million |
| \= Expect no match |
| MORE THAN MILLION |
| No match |
| more \n than \n million |
| No match |
| |
| /(?:(?s-i)more.*than).*million/i |
| more than million |
| 0: more than million |
| more than MILLION |
| 0: more than MILLION |
| more \n than Million |
| 0: more \x0a than Million |
| \= Expect no match |
| MORE THAN MILLION |
| No match |
| more \n than \n million |
| No match |
| |
| /(?>a(?i)b+)+c/ |
| abc |
| 0: abc |
| aBbc |
| 0: aBbc |
| aBBc |
| 0: aBBc |
| \= Expect no match |
| Abc |
| No match |
| abAb |
| No match |
| abbC |
| No match |
| |
| /(?=a(?i)b)\w\wc/ |
| abc |
| 0: abc |
| aBc |
| 0: aBc |
| \= Expect no match |
| Ab |
| No match |
| abC |
| No match |
| aBC |
| No match |
| |
| /(?<=a(?i)b)(\w\w)c/ |
| abxxc |
| 0: xxc |
| aBxxc |
| 0: xxc |
| \= Expect no match |
| Abxxc |
| No match |
| ABxxc |
| No match |
| abxxC |
| No match |
| |
| /^(?(?=abc)\w{3}:|\d\d)$/ |
| abc: |
| 0: abc: |
| 12 |
| 0: 12 |
| \= Expect no match |
| 123 |
| No match |
| xyz |
| No match |
| |
| /^(?(?!abc)\d\d|\w{3}:)$/ |
| abc: |
| 0: abc: |
| 12 |
| 0: 12 |
| \= Expect no match |
| 123 |
| No match |
| xyz |
| No match |
| |
| /(?(?<=foo)bar|cat)/ |
| foobar |
| 0: bar |
| cat |
| 0: cat |
| fcat |
| 0: cat |
| focat |
| 0: cat |
| \= Expect no match |
| foocat |
| No match |
| |
| /(?(?<!foo)cat|bar)/ |
| foobar |
| 0: bar |
| cat |
| 0: cat |
| fcat |
| 0: cat |
| focat |
| 0: cat |
| \= Expect no match |
| foocat |
| No match |
| |
| /(?>a*)*/ |
| a |
| 0: a |
| 1: |
| aa |
| 0: aa |
| 1: |
| aaaa |
| 0: aaaa |
| 1: |
| |
| /(abc|)+/ |
| abc |
| 0: abc |
| 1: |
| abcabc |
| 0: abcabc |
| 1: abc |
| 2: |
| abcabcabc |
| 0: abcabcabc |
| 1: abcabc |
| 2: abc |
| 3: |
| xyz |
| 0: |
| |
| /([a]*)*/ |
| a |
| 0: a |
| 1: |
| aaaaa |
| 0: aaaaa |
| 1: aaaa |
| 2: aaa |
| 3: aa |
| 4: a |
| 5: |
| |
| /([ab]*)*/ |
| a |
| 0: a |
| 1: |
| b |
| 0: b |
| 1: |
| ababab |
| 0: ababab |
| 1: ababa |
| 2: abab |
| 3: aba |
| 4: ab |
| 5: a |
| 6: |
| aaaabcde |
| 0: aaaab |
| 1: aaaa |
| 2: aaa |
| 3: aa |
| 4: a |
| 5: |
| bbbb |
| 0: bbbb |
| 1: bbb |
| 2: bb |
| 3: b |
| 4: |
| |
| /([^a]*)*/ |
| b |
| 0: b |
| 1: |
| bbbb |
| 0: bbbb |
| 1: bbb |
| 2: bb |
| 3: b |
| 4: |
| aaa |
| 0: |
| |
| /([^ab]*)*/ |
| cccc |
| 0: cccc |
| 1: ccc |
| 2: cc |
| 3: c |
| 4: |
| abab |
| 0: |
| |
| /([a]*?)*/ |
| a |
| 0: a |
| 1: |
| aaaa |
| 0: aaaa |
| 1: aaa |
| 2: aa |
| 3: a |
| 4: |
| |
| /([ab]*?)*/ |
| a |
| 0: a |
| 1: |
| b |
| 0: b |
| 1: |
| abab |
| 0: abab |
| 1: aba |
| 2: ab |
| 3: a |
| 4: |
| baba |
| 0: baba |
| 1: bab |
| 2: ba |
| 3: b |
| 4: |
| |
| /([^a]*?)*/ |
| b |
| 0: b |
| 1: |
| bbbb |
| 0: bbbb |
| 1: bbb |
| 2: bb |
| 3: b |
| 4: |
| aaa |
| 0: |
| |
| /([^ab]*?)*/ |
| c |
| 0: c |
| 1: |
| cccc |
| 0: cccc |
| 1: ccc |
| 2: cc |
| 3: c |
| 4: |
| baba |
| 0: |
| |
| /(?>a*)*/ |
| a |
| 0: a |
| 1: |
| aaabcde |
| 0: aaa |
| 1: |
| |
| /((?>a*))*/ |
| aaaaa |
| 0: aaaaa |
| 1: |
| aabbaa |
| 0: aa |
| 1: |
| |
| /((?>a*?))*/ |
| aaaaa |
| 0: aaaaa |
| 1: |
| aabbaa |
| 0: aa |
| 1: |
| |
| /(?(?=[^a-z]+[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ) /x |
| 12-sep-98 |
| 0: 12-sep-98 |
| 12-09-98 |
| 0: 12-09-98 |
| \= Expect no match |
| sep-12-98 |
| No match |
| |
| /(?i:saturday|sunday)/ |
| saturday |
| 0: saturday |
| sunday |
| 0: sunday |
| Saturday |
| 0: Saturday |
| Sunday |
| 0: Sunday |
| SATURDAY |
| 0: SATURDAY |
| SUNDAY |
| 0: SUNDAY |
| SunDay |
| 0: SunDay |
| |
| /(a(?i)bc|BB)x/ |
| abcx |
| 0: abcx |
| aBCx |
| 0: aBCx |
| bbx |
| 0: bbx |
| BBx |
| 0: BBx |
| \= Expect no match |
| abcX |
| No match |
| aBCX |
| No match |
| bbX |
| No match |
| BBX |
| No match |
| |
| /^([ab](?i)[cd]|[ef])/ |
| ac |
| 0: ac |
| aC |
| 0: aC |
| bD |
| 0: bD |
| elephant |
| 0: e |
| Europe |
| 0: E |
| frog |
| 0: f |
| France |
| 0: F |
| \= Expect no match |
| Africa |
| No match |
| |
| /^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/ |
| ab |
| 0: ab |
| aBd |
| 0: aBd |
| xy |
| 0: xy |
| xY |
| 0: xY |
| zebra |
| 0: z |
| Zambesi |
| 0: Z |
| \= Expect no match |
| aCD |
| No match |
| XY |
| No match |
| |
| /(?<=foo\n)^bar/m |
| foo\nbar |
| 0: bar |
| \= Expect no match |
| bar |
| No match |
| baz\nbar |
| No match |
| |
| /(?<=(?<!foo)bar)baz/ |
| barbaz |
| 0: baz |
| barbarbaz |
| 0: baz |
| koobarbaz |
| 0: baz |
| \= Expect no match |
| baz |
| No match |
| foobarbaz |
| No match |
| |
| # The following tests are taken from the Perl 5.005 test suite; some of them |
| # are compatible with 5.004, but I'd rather not have to sort them out. |
| |
| /abc/ |
| abc |
| 0: abc |
| xabcy |
| 0: abc |
| ababc |
| 0: abc |
| \= Expect no match |
| xbc |
| No match |
| axc |
| No match |
| abx |
| No match |
| |
| /ab*c/ |
| abc |
| 0: abc |
| |
| /ab*bc/ |
| abc |
| 0: abc |
| abbc |
| 0: abbc |
| abbbbc |
| 0: abbbbc |
| |
| /.{1}/ |
| abbbbc |
| 0: a |
| |
| /.{3,4}/ |
| abbbbc |
| 0: abbb |
| |
| /ab{0,}bc/ |
| abbbbc |
| 0: abbbbc |
| |
| /ab+bc/ |
| abbc |
| 0: abbc |
| \= Expect no match |
| abc |
| No match |
| abq |
| No match |
| |
| /ab+bc/ |
| abbbbc |
| 0: abbbbc |
| |
| /ab{1,}bc/ |
| abbbbc |
| 0: abbbbc |
| |
| /ab{1,3}bc/ |
| abbbbc |
| 0: abbbbc |
| |
| /ab{3,4}bc/ |
| abbbbc |
| 0: abbbbc |
| |
| /ab{4,5}bc/ |
| \= Expect no match |
| abq |
| No match |
| abbbbc |
| No match |
| |
| /ab?bc/ |
| abbc |
| 0: abbc |
| abc |
| 0: abc |
| |
| /ab{0,1}bc/ |
| abc |
| 0: abc |
| |
| /ab?bc/ |
| |
| /ab?c/ |
| abc |
| 0: abc |
| |
| /ab{0,1}c/ |
| abc |
| 0: abc |
| |
| /^abc$/ |
| abc |
| 0: abc |
| \= Expect no match |
| abbbbc |
| No match |
| abcc |
| No match |
| |
| /^abc/ |
| abcc |
| 0: abc |
| |
| /^abc$/ |
| |
| /abc$/ |
| aabc |
| 0: abc |
| aabc |
| 0: abc |
| \= Expect no match |
| aabcd |
| No match |
| |
| /^/ |
| abc |
| 0: |
| |
| /$/ |
| abc |
| 0: |
| |
| /a.c/ |
| abc |
| 0: abc |
| axc |
| 0: axc |
| |
| /a.*c/ |
| axyzc |
| 0: axyzc |
| |
| /a[bc]d/ |
| abd |
| 0: abd |
| \= Expect no match |
| axyzd |
| No match |
| abc |
| No match |
| |
| /a[b-d]e/ |
| ace |
| 0: ace |
| |
| /a[b-d]/ |
| aac |
| 0: ac |
| |
| /a[-b]/ |
| a- |
| 0: a- |
| |
| /a[b-]/ |
| a- |
| 0: a- |
| |
| /a]/ |
| a] |
| 0: a] |
| |
| /a[]]b/ |
| a]b |
| 0: a]b |
| |
| /a[^bc]d/ |
| aed |
| 0: aed |
| \= Expect no match |
| abd |
| No match |
| abd |
| No match |
| |
| /a[^-b]c/ |
| adc |
| 0: adc |
| |
| /a[^]b]c/ |
| adc |
| 0: adc |
| a-c |
| 0: a-c |
| \= Expect no match |
| a]c |
| No match |
| |
| /\ba\b/ |
| a- |
| 0: a |
| -a |
| 0: a |
| -a- |
| 0: a |
| |
| /\by\b/ |
| \= Expect no match |
| xy |
| No match |
| yz |
| No match |
| xyz |
| No match |
| |
| /\Ba\B/ |
| \= Expect no match |
| a- |
| No match |
| -a |
| No match |
| -a- |
| No match |
| |
| /\By\b/ |
| xy |
| 0: y |
| |
| /\by\B/ |
| yz |
| 0: y |
| |
| /\By\B/ |
| xyz |
| 0: y |
| |
| /\w/ |
| a |
| 0: a |
| |
| /\W/ |
| - |
| 0: - |
| \= Expect no match |
| a |
| No match |
| |
| /a\sb/ |
| a b |
| 0: a b |
| |
| /a\Sb/ |
| a-b |
| 0: a-b |
| \= Expect no match |
| a b |
| No match |
| |
| /\d/ |
| 1 |
| 0: 1 |
| |
| /\D/ |
| - |
| 0: - |
| \= Expect no match |
| 1 |
| No match |
| |
| /[\w]/ |
| a |
| 0: a |
| |
| /[\W]/ |
| - |
| 0: - |
| \= Expect no match |
| a |
| No match |
| |
| /a[\s]b/ |
| a b |
| 0: a b |
| |
| /a[\S]b/ |
| a-b |
| 0: a-b |
| \= Expect no match |
| a b |
| No match |
| |
| /[\d]/ |
| 1 |
| 0: 1 |
| |
| /[\D]/ |
| - |
| 0: - |
| \= Expect no match |
| 1 |
| No match |
| |
| /ab|cd/ |
| abc |
| 0: ab |
| abcd |
| 0: ab |
| |
| /()ef/ |
| def |
| 0: ef |
| |
| /$b/ |
| |
| /a\(b/ |
| a(b |
| 0: a(b |
| |
| /a\(*b/ |
| ab |
| 0: ab |
| a((b |
| 0: a((b |
| |
| /a\\b/ |
| a\\b |
| 0: a\b |
| \= Expect no match |
| a\b |
| No match |
| |
| /((a))/ |
| abc |
| 0: a |
| |
| /(a)b(c)/ |
| abc |
| 0: abc |
| |
| /a+b+c/ |
| aabbabc |
| 0: abc |
| |
| /a{1,}b{1,}c/ |
| aabbabc |
| 0: abc |
| |
| /a.+?c/ |
| abcabc |
| 0: abcabc |
| 1: abc |
| |
| /(a+|b)*/ |
| ab |
| 0: ab |
| 1: a |
| 2: |
| |
| /(a+|b){0,}/ |
| ab |
| 0: ab |
| 1: a |
| 2: |
| |
| /(a+|b)+/ |
| ab |
| 0: ab |
| 1: a |
| |
| /(a+|b){1,}/ |
| ab |
| 0: ab |
| 1: a |
| |
| /(a+|b)?/ |
| ab |
| 0: a |
| 1: |
| |
| /(a+|b){0,1}/ |
| ab |
| 0: a |
| 1: |
| |
| /[^ab]*/ |
| cde |
| 0: cde |
| |
| /abc/ |
| \= Expect no match |
| b |
| No match |
| |
| /a*/ |
| |
| /([abc])*d/ |
| abbbcd |
| 0: abbbcd |
| |
| /([abc])*bcd/ |
| abcd |
| 0: abcd |
| |
| /a|b|c|d|e/ |
| e |
| 0: e |
| |
| /(a|b|c|d|e)f/ |
| ef |
| 0: ef |
| |
| /abcd*efg/ |
| abcdefg |
| 0: abcdefg |
| |
| /ab*/ |
| xabyabbbz |
| 0: ab |
| xayabbbz |
| 0: a |
| |
| /(ab|cd)e/ |
| abcde |
| 0: cde |
| |
| /[abhgefdc]ij/ |
| hij |
| 0: hij |
| |
| /^(ab|cd)e/ |
| |
| /(abc|)ef/ |
| abcdef |
| 0: ef |
| |
| /(a|b)c*d/ |
| abcd |
| 0: bcd |
| |
| /(ab|ab*)bc/ |
| abc |
| 0: abc |
| |
| /a([bc]*)c*/ |
| abc |
| 0: abc |
| 1: a |
| |
| /a([bc]*)(c*d)/ |
| abcd |
| 0: abcd |
| |
| /a([bc]+)(c*d)/ |
| abcd |
| 0: abcd |
| |
| /a([bc]*)(c+d)/ |
| abcd |
| 0: abcd |
| |
| /a[bcd]*dcdcde/ |
| adcdcde |
| 0: adcdcde |
| |
| /a[bcd]+dcdcde/ |
| \= Expect no match |
| abcde |
| No match |
| adcdcde |
| No match |
| |
| /(ab|a)b*c/ |
| abc |
| 0: abc |
| |
| /((a)(b)c)(d)/ |
| abcd |
| 0: abcd |
| |
| /[a-zA-Z_][a-zA-Z0-9_]*/ |
| alpha |
| 0: alpha |
| |
| /^a(bc+|b[eh])g|.h$/ |
| abh |
| 0: bh |
| |
| /(bc+d$|ef*g.|h?i(j|k))/ |
| effgz |
| 0: effgz |
| ij |
| 0: ij |
| reffgz |
| 0: effgz |
| \= Expect no match |
| effg |
| No match |
| bcdd |
| No match |
| |
| /((((((((((a))))))))))/ |
| a |
| 0: a |
| |
| /(((((((((a)))))))))/ |
| a |
| 0: a |
| |
| /multiple words of text/ |
| \= Expect no match |
| aa |
| No match |
| uh-uh |
| No match |
| |
| /multiple words/ |
| multiple words, yeah |
| 0: multiple words |
| |
| /(.*)c(.*)/ |
| abcde |
| 0: abcde |
| |
| /\((.*), (.*)\)/ |
| (a, b) |
| 0: (a, b) |
| |
| /[k]/ |
| |
| /abcd/ |
| abcd |
| 0: abcd |
| |
| /a(bc)d/ |
| abcd |
| 0: abcd |
| |
| /a[-]?c/ |
| ac |
| 0: ac |
| |
| /abc/i |
| ABC |
| 0: ABC |
| XABCY |
| 0: ABC |
| ABABC |
| 0: ABC |
| \= Expect no match |
| aaxabxbaxbbx |
| No match |
| XBC |
| No match |
| AXC |
| No match |
| ABX |
| No match |
| |
| /ab*c/i |
| ABC |
| 0: ABC |
| |
| /ab*bc/i |
| ABC |
| 0: ABC |
| ABBC |
| 0: ABBC |
| |
| /ab*?bc/i |
| ABBBBC |
| 0: ABBBBC |
| |
| /ab{0,}?bc/i |
| ABBBBC |
| 0: ABBBBC |
| |
| /ab+?bc/i |
| ABBC |
| 0: ABBC |
| |
| /ab+bc/i |
| \= Expect no match |
| ABC |
| No match |
| ABQ |
| No match |
| |
| /ab{1,}bc/i |
| |
| /ab+bc/i |
| ABBBBC |
| 0: ABBBBC |
| |
| /ab{1,}?bc/i |
| ABBBBC |
| 0: ABBBBC |
| |
| /ab{1,3}?bc/i |
| ABBBBC |
| 0: ABBBBC |
| |
| /ab{3,4}?bc/i |
| ABBBBC |
| 0: ABBBBC |
| |
| /ab{4,5}?bc/i |
| \= Expect no match |
| ABQ |
| No match |
| ABBBBC |
| No match |
| |
| /ab??bc/i |
| ABBC |
| 0: ABBC |
| ABC |
| 0: ABC |
| |
| /ab{0,1}?bc/i |
| ABC |
| 0: ABC |
| |
| /ab??bc/i |
| |
| /ab??c/i |
| ABC |
| 0: ABC |
| |
| /ab{0,1}?c/i |
| ABC |
| 0: ABC |
| |
| /^abc$/i |
| ABC |
| 0: ABC |
| \= Expect no match |
| ABBBBC |
| No match |
| ABCC |
| No match |
| |
| /^abc/i |
| ABCC |
| 0: ABC |
| |
| /^abc$/i |
| |
| /abc$/i |
| AABC |
| 0: ABC |
| |
| /^/i |
| ABC |
| 0: |
| |
| /$/i |
| ABC |
| 0: |
| |
| /a.c/i |
| ABC |
| 0: ABC |
| AXC |
| 0: AXC |
| |
| /a.*?c/i |
| AXYZC |
| 0: AXYZC |
| |
| /a.*c/i |
| AABC |
| 0: AABC |
| \= Expect no match |
| AXYZD |
| No match |
| |
| /a[bc]d/i |
| ABD |
| 0: ABD |
| |
| /a[b-d]e/i |
| ACE |
| 0: ACE |
| \= Expect no match |
| ABC |
| No match |
| ABD |
| No match |
| |
| /a[b-d]/i |
| AAC |
| 0: AC |
| |
| /a[-b]/i |
| A- |
| 0: A- |
| |
| /a[b-]/i |
| A- |
| 0: A- |
| |
| /a]/i |
| A] |
| 0: A] |
| |
| /a[]]b/i |
| A]B |
| 0: A]B |
| |
| /a[^bc]d/i |
| AED |
| 0: AED |
| |
| /a[^-b]c/i |
| ADC |
| 0: ADC |
| \= Expect no match |
| ABD |
| No match |
| A-C |
| No match |
| |
| /a[^]b]c/i |
| ADC |
| 0: ADC |
| |
| /ab|cd/i |
| ABC |
| 0: AB |
| ABCD |
| 0: AB |
| |
| /()ef/i |
| DEF |
| 0: EF |
| |
| /$b/i |
| \= Expect no match |
| A]C |
| No match |
| B |
| No match |
| |
| /a\(b/i |
| A(B |
| 0: A(B |
| |
| /a\(*b/i |
| AB |
| 0: AB |
| A((B |
| 0: A((B |
| |
| /a\\b/i |
| \= Expect no match |
| A\=notbol |
| No match |
| |
| /((a))/i |
| ABC |
| 0: A |
| |
| /(a)b(c)/i |
| ABC |
| 0: ABC |
| |
| /a+b+c/i |
| AABBABC |
| 0: ABC |
| |
| /a{1,}b{1,}c/i |
| AABBABC |
| 0: ABC |
| |
| /a.+?c/i |
| ABCABC |
| 0: ABCABC |
| 1: ABC |
| |
| /a.*?c/i |
| ABCABC |
| 0: ABCABC |
| 1: ABC |
| |
| /a.{0,5}?c/i |
| ABCABC |
| 0: ABCABC |
| 1: ABC |
| |
| /(a+|b)*/i |
| AB |
| 0: AB |
| 1: A |
| 2: |
| |
| /(a+|b){0,}/i |
| AB |
| 0: AB |
| 1: A |
| 2: |
| |
| /(a+|b)+/i |
| AB |
| 0: AB |
| 1: A |
| |
| /(a+|b){1,}/i |
| AB |
| 0: AB |
| 1: A |
| |
| /(a+|b)?/i |
| AB |
| 0: A |
| 1: |
| |
| /(a+|b){0,1}/i |
| AB |
| 0: A |
| 1: |
| |
| /(a+|b){0,1}?/i |
| AB |
| 0: A |
| 1: |
| |
| /[^ab]*/i |
| CDE |
| 0: CDE |
| |
| /abc/i |
| |
| /a*/i |
| |
| /([abc])*d/i |
| ABBBCD |
| 0: ABBBCD |
| |
| /([abc])*bcd/i |
| ABCD |
| 0: ABCD |
| |
| /a|b|c|d|e/i |
| E |
| 0: E |
| |
| /(a|b|c|d|e)f/i |
| EF |
| 0: EF |
| |
| /abcd*efg/i |
| ABCDEFG |
| 0: ABCDEFG |
| |
| /ab*/i |
| XABYABBBZ |
| 0: AB |
| XAYABBBZ |
| 0: A |
| |
| /(ab|cd)e/i |
| ABCDE |
| 0: CDE |
| |
| /[abhgefdc]ij/i |
| HIJ |
| 0: HIJ |
| |
| /^(ab|cd)e/i |
| \= Expect no match |
| ABCDE |
| No match |
| |
| /(abc|)ef/i |
| ABCDEF |
| 0: EF |
| |
| /(a|b)c*d/i |
| ABCD |
| 0: BCD |
| |
| /(ab|ab*)bc/i |
| ABC |
| 0: ABC |
| |
| /a([bc]*)c*/i |
| ABC |
| 0: ABC |
| 1: A |
| |
| /a([bc]*)(c*d)/i |
| ABCD |
| 0: ABCD |
| |
| /a([bc]+)(c*d)/i |
| ABCD |
| 0: ABCD |
| |
| /a([bc]*)(c+d)/i |
| ABCD |
| 0: ABCD |
| |
| /a[bcd]*dcdcde/i |
| ADCDCDE |
| 0: ADCDCDE |
| |
| /a[bcd]+dcdcde/i |
| |
| /(ab|a)b*c/i |
| ABC |
| 0: ABC |
| |
| /((a)(b)c)(d)/i |
| ABCD |
| 0: ABCD |
| |
| /[a-zA-Z_][a-zA-Z0-9_]*/i |
| ALPHA |
| 0: ALPHA |
| |
| /^a(bc+|b[eh])g|.h$/i |
| ABH |
| 0: BH |
| |
| /(bc+d$|ef*g.|h?i(j|k))/i |
| EFFGZ |
| 0: EFFGZ |
| IJ |
| 0: IJ |
| REFFGZ |
| 0: EFFGZ |
| \= Expect no match |
| ADCDCDE |
| No match |
| EFFG |
| No match |
| BCDD |
| No match |
| |
| /((((((((((a))))))))))/i |
| A |
| 0: A |
| |
| /(((((((((a)))))))))/i |
| A |
| 0: A |
| |
| /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i |
| A |
| 0: A |
| |
| /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i |
| C |
| 0: C |
| |
| /multiple words of text/i |
| \= Expect no match |
| AA |
| No match |
| UH-UH |
| No match |
| |
| /multiple words/i |
| MULTIPLE WORDS, YEAH |
| 0: MULTIPLE WORDS |
| |
| /(.*)c(.*)/i |
| ABCDE |
| 0: ABCDE |
| |
| /\((.*), (.*)\)/i |
| (A, B) |
| 0: (A, B) |
| |
| /[k]/i |
| |
| /abcd/i |
| ABCD |
| 0: ABCD |
| |
| /a(bc)d/i |
| ABCD |
| 0: ABCD |
| |
| /a[-]?c/i |
| AC |
| 0: AC |
| |
| /a(?!b)./ |
| abad |
| 0: ad |
| |
| /a(?=d)./ |
| abad |
| 0: ad |
| |
| /a(?=c|d)./ |
| abad |
| 0: ad |
| |
| /a(?:b|c|d)(.)/ |
| ace |
| 0: ace |
| |
| /a(?:b|c|d)*(.)/ |
| ace |
| 0: ace |
| 1: ac |
| |
| /a(?:b|c|d)+?(.)/ |
| ace |
| 0: ace |
| acdbcdbe |
| 0: acdbcdbe |
| 1: acdbcdb |
| 2: acdbcd |
| 3: acdbc |
| 4: acdb |
| 5: acd |
| |
| /a(?:b|c|d)+(.)/ |
| acdbcdbe |
| 0: acdbcdbe |
| 1: acdbcdb |
| 2: acdbcd |
| 3: acdbc |
| 4: acdb |
| 5: acd |
| |
| /a(?:b|c|d){2}(.)/ |
| acdbcdbe |
| 0: acdb |
| |
| /a(?:b|c|d){4,5}(.)/ |
| acdbcdbe |
| 0: acdbcdb |
| 1: acdbcd |
| |
| /a(?:b|c|d){4,5}?(.)/ |
| acdbcdbe |
| 0: acdbcdb |
| 1: acdbcd |
| |
| /((foo)|(bar))*/ |
| foobar |
| 0: foobar |
| 1: foo |
| 2: |
| |
| /a(?:b|c|d){6,7}(.)/ |
| acdbcdbe |
| 0: acdbcdbe |
| |
| /a(?:b|c|d){6,7}?(.)/ |
| acdbcdbe |
| 0: acdbcdbe |
| |
| /a(?:b|c|d){5,6}(.)/ |
| acdbcdbe |
| 0: acdbcdbe |
| 1: acdbcdb |
| |
| /a(?:b|c|d){5,6}?(.)/ |
| acdbcdbe |
| 0: acdbcdbe |
| 1: acdbcdb |
| |
| /a(?:b|c|d){5,7}(.)/ |
| acdbcdbe |
| 0: acdbcdbe |
| 1: acdbcdb |
| |
| /a(?:b|c|d){5,7}?(.)/ |
| acdbcdbe |
| 0: acdbcdbe |
| 1: acdbcdb |
| |
| /a(?:b|(c|e){1,2}?|d)+?(.)/ |
| ace |
| 0: ace |
| |
| /^(.+)?B/ |
| AB |
| 0: AB |
| |
| /^([^a-z])|(\^)$/ |
| . |
| 0: . |
| |
| /^[<>]&/ |
| <&OUT |
| 0: <& |
| |
| /(?:(f)(o)(o)|(b)(a)(r))*/ |
| foobar |
| 0: foobar |
| 1: foo |
| 2: |
| |
| /(?<=a)b/ |
| ab |
| 0: b |
| \= Expect no match |
| cb |
| No match |
| b |
| No match |
| |
| /(?<!c)b/ |
| ab |
| 0: b |
| b |
| 0: b |
| b |
| 0: b |
| |
| /(?:..)*a/ |
| aba |
| 0: aba |
| 1: a |
| |
| /(?:..)*?a/ |
| aba |
| 0: aba |
| 1: a |
| |
| /^(){3,5}/ |
| abc |
| 0: |
| |
| /^(a+)*ax/ |
| aax |
| 0: aax |
| |
| /^((a|b)+)*ax/ |
| aax |
| 0: aax |
| |
| /^((a|bc)+)*ax/ |
| aax |
| 0: aax |
| |
| /(a|x)*ab/ |
| cab |
| 0: ab |
| |
| /(a)*ab/ |
| cab |
| 0: ab |
| |
| /(?:(?i)a)b/ |
| ab |
| 0: ab |
| |
| /((?i)a)b/ |
| ab |
| 0: ab |
| |
| /(?:(?i)a)b/ |
| Ab |
| 0: Ab |
| |
| /((?i)a)b/ |
| Ab |
| 0: Ab |
| |
| /(?:(?i)a)b/ |
| \= Expect no match |
| cb |
| No match |
| aB |
| No match |
| |
| /((?i)a)b/ |
| |
| /(?i:a)b/ |
| ab |
| 0: ab |
| |
| /((?i:a))b/ |
| ab |
| 0: ab |
| |
| /(?i:a)b/ |
| Ab |
| 0: Ab |
| |
| /((?i:a))b/ |
| Ab |
| 0: Ab |
| |
| /(?i:a)b/ |
| \= Expect no match |
| aB |
| No match |
| aB |
| No match |
| |
| /((?i:a))b/ |
| |
| /(?:(?-i)a)b/i |
| ab |
| 0: ab |
| |
| /((?-i)a)b/i |
| ab |
| 0: ab |
| |
| /(?:(?-i)a)b/i |
| aB |
| 0: aB |
| |
| /((?-i)a)b/i |
| aB |
| 0: aB |
| |
| /(?:(?-i)a)b/i |
| aB |
| 0: aB |
| \= Expect no match |
| Ab |
| No match |
| |
| /((?-i)a)b/i |
| |
| /(?:(?-i)a)b/i |
| aB |
| 0: aB |
| |
| /((?-i)a)b/i |
| aB |
| 0: aB |
| |
| /(?:(?-i)a)b/i |
| \= Expect no match |
| Ab |
| No match |
| AB |
| No match |
| |
| /((?-i)a)b/i |
| |
| /(?-i:a)b/i |
| ab |
| 0: ab |
| |
| /((?-i:a))b/i |
| ab |
| 0: ab |
| |
| /(?-i:a)b/i |
| aB |
| 0: aB |
| |
| /((?-i:a))b/i |
| aB |
| 0: aB |
| |
| /(?-i:a)b/i |
| \= Expect no match |
| AB |
| No match |
| Ab |
| No match |
| |
| /((?-i:a))b/i |
| |
| /(?-i:a)b/i |
| aB |
| 0: aB |
| |
| /((?-i:a))b/i |
| aB |
| 0: aB |
| |
| /(?-i:a)b/i |
| \= Expect no match |
| Ab |
| No match |
| AB |
| No match |
| |
| /((?-i:a))b/i |
| |
| /((?-i:a.))b/i |
| \= Expect no match |
| AB |
| No match |
| a\nB |
| No match |
| |
| /((?s-i:a.))b/i |
| a\nB |
| 0: a\x0aB |
| |
| /(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/ |
| cabbbb |
| 0: cabbbb |
| |
| /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/ |
| caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb |
| 0: caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb |
| |
| /foo\w*\d{4}baz/ |
| foobar1234baz |
| 0: foobar1234baz |
| |
| /x(~~)*(?:(?:F)?)?/ |
| x~~ |
| 0: x~~ |
| 1: x |
| |
| /^a(?#xxx){3}c/ |
| aaac |
| 0: aaac |
| |
| /^a (?#xxx) (?#yyy) {3}c/x |
| aaac |
| 0: aaac |
| |
| /(?<![cd])b/ |
| \= Expect no match |
| B\nB |
| No match |
| dbcb |
| No match |
| |
| /(?<![cd])[ab]/ |
| dbaacb |
| 0: a |
| |
| /(?<!(c|d))b/ |
| |
| /(?<!(c|d))[ab]/ |
| dbaacb |
| 0: a |
| |
| /(?<!cd)[ab]/ |
| cdaccb |
| 0: b |
| |
| /^(?:a?b?)*$/ |
| \= Expect no match |
| dbcb |
| No match |
| a-- |
| No match |
| |
| /((?s)^a(.))((?m)^b$)/ |
| a\nb\nc\n |
| 0: a\x0ab |
| |
| /((?m)^b$)/ |
| a\nb\nc\n |
| 0: b |
| |
| /(?m)^b/ |
| a\nb\n |
| 0: b |
| |
| /(?m)^(b)/ |
| a\nb\n |
| 0: b |
| |
| /((?m)^b)/ |
| a\nb\n |
| 0: b |
| |
| /\n((?m)^b)/ |
| a\nb\n |
| 0: \x0ab |
| |
| /((?s).)c(?!.)/ |
| a\nb\nc\n |
| 0: \x0ac |
| a\nb\nc\n |
| 0: \x0ac |
| |
| /((?s)b.)c(?!.)/ |
| a\nb\nc\n |
| 0: b\x0ac |
| a\nb\nc\n |
| 0: b\x0ac |
| |
| /^b/ |
| |
| /()^b/ |
| \= Expect no match |
| a\nb\nc\n |
| No match |
| a\nb\nc\n |
| No match |
| |
| /((?m)^b)/ |
| a\nb\nc\n |
| 0: b |
| |
| /(?(?!a)a|b)/ |
| |
| /(?(?!a)b|a)/ |
| a |
| 0: a |
| |
| /(?(?=a)b|a)/ |
| \= Expect no match |
| a |
| No match |
| a |
| No match |
| |
| /(?(?=a)a|b)/ |
| a |
| 0: a |
| |
| /(\w+:)+/ |
| one: |
| 0: one: |
| |
| /$(?<=^(a))/ |
| a |
| 0: |
| |
| /([\w:]+::)?(\w+)$/ |
| abcd |
| 0: abcd |
| xy:z:::abcd |
| 0: xy:z:::abcd |
| |
| /^[^bcd]*(c+)/ |
| aexycd |
| 0: aexyc |
| |
| /(a*)b+/ |
| caab |
| 0: aab |
| |
| /([\w:]+::)?(\w+)$/ |
| abcd |
| 0: abcd |
| xy:z:::abcd |
| 0: xy:z:::abcd |
| \= Expect no match |
| abcd: |
| No match |
| abcd: |
| No match |
| |
| /^[^bcd]*(c+)/ |
| aexycd |
| 0: aexyc |
| |
| /(>a+)ab/ |
| |
| /(?>a+)b/ |
| aaab |
| 0: aaab |
| |
| /([[:]+)/ |
| a:[b]: |
| 0: :[ |
| |
| /([[=]+)/ |
| a=[b]= |
| 0: =[ |
| |
| /([[.]+)/ |
| a.[b]. |
| 0: .[ |
| |
| /((?>a+)b)/ |
| aaab |
| 0: aaab |
| |
| /(?>(a+))b/ |
| aaab |
| 0: aaab |
| |
| /((?>[^()]+)|\([^()]*\))+/ |
| ((abc(ade)ufh()()x |
| 0: abc(ade)ufh()()x |
| 1: abc(ade)ufh()() |
| 2: abc(ade)ufh() |
| 3: abc(ade)ufh |
| 4: abc(ade) |
| 5: abc |
| |
| /a\Z/ |
| \= Expect no match |
| aaab |
| No match |
| a\nb\n |
| No match |
| |
| /b\Z/ |
| a\nb\n |
| 0: b |
| |
| /b\z/ |
| |
| /b\Z/ |
| a\nb |
| 0: b |
| |
| /b\z/ |
| a\nb |
| 0: b |
| |
| /(?>.*)(?<=(abcd|wxyz))/ |
| alphabetabcd |
| 0: alphabetabcd |
| endingwxyz |
| 0: endingwxyz |
| \= Expect no match |
| a rather long string that doesn't end with one of them |
| No match |
| |
| /word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/ |
| word cat dog elephant mussel cow horse canary baboon snake shark otherword |
| 0: word cat dog elephant mussel cow horse canary baboon snake shark otherword |
| \= Expect no match |
| word cat dog elephant mussel cow horse canary baboon snake shark |
| No match |
| |
| /word (?>[a-zA-Z0-9]+ ){0,30}otherword/ |
| \= Expect no match |
| word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope |
| No match |
| |
| /(?<=\d{3}(?!999))foo/ |
| 999foo |
| 0: foo |
| 123999foo |
| 0: foo |
| \= Expect no match |
| 123abcfoo |
| No match |
| |
| /(?<=(?!...999)\d{3})foo/ |
| 999foo |
| 0: foo |
| 123999foo |
| 0: foo |
| \= Expect no match |
| 123abcfoo |
| No match |
| |
| /(?<=\d{3}(?!999)...)foo/ |
| 123abcfoo |
| 0: foo |
| 123456foo |
| 0: foo |
| \= Expect no match |
| 123999foo |
| No match |
| |
| /(?<=\d{3}...)(?<!999)foo/ |
| 123abcfoo |
| 0: foo |
| 123456foo |
| 0: foo |
| \= Expect no match |
| 123999foo |
| No match |
| |
| /((Z)+|A)*/ |
| ZABCDEFG |
| 0: ZA |
| 1: Z |
| 2: |
| |
| /(Z()|A)*/ |
| ZABCDEFG |
| 0: ZA |
| 1: Z |
| 2: |
| |
| /(Z(())|A)*/ |
| ZABCDEFG |
| 0: ZA |
| 1: Z |
| 2: |
| |
| /((?>Z)+|A)*/ |
| ZABCDEFG |
| 0: ZA |
| 1: Z |
| 2: |
| |
| /((?>)+|A)*/ |
| ZABCDEFG |
| 0: |
| |
| /a*/g |
| abbab |
| 0: a |
| 0: |
| 0: |
| 0: a |
| 0: |
| 0: |
| |
| /[[:space:]]+/ |
| > \x09\x0a\x0c\x0d\x0b< |
| 0: \x09\x0a\x0c\x0d\x0b |
| |
| /[[:blank:]]+/ |
| > \x09\x0a\x0c\x0d\x0b< |
| 0: \x09 |
| |
| /[\s]+/ |
| > \x09\x0a\x0c\x0d\x0b< |
| 0: \x09\x0a\x0c\x0d\x0b |
| |
| /\s+/ |
| > \x09\x0a\x0c\x0d\x0b< |
| 0: \x09\x0a\x0c\x0d\x0b |
| |
| /ab/x |
| ab |
| 0: ab |
| |
| /(?!\A)x/m |
| a\nxb\n |
| 0: x |
| |
| /(?!^)x/m |
| \= Expect no match |
| a\nxb\n |
| No match |
| |
| /abc\Qabc\Eabc/ |
| abcabcabc |
| 0: abcabcabc |
| |
| /abc\Q(*+|\Eabc/ |
| abc(*+|abc |
| 0: abc(*+|abc |
| |
| / abc\Q abc\Eabc/x |
| abc abcabc |
| 0: abc abcabc |
| \= Expect no match |
| abcabcabc |
| No match |
| |
| /abc#comment |
| \Q#not comment |
| literal\E/x |
| abc#not comment\n literal |
| 0: abc#not comment\x0a literal |
| |
| /abc#comment |
| \Q#not comment |
| literal/x |
| abc#not comment\n literal |
| 0: abc#not comment\x0a literal |
| |
| /abc#comment |
| \Q#not comment |
| literal\E #more comment |
| /x |
| abc#not comment\n literal |
| 0: abc#not comment\x0a literal |
| |
| /abc#comment |
| \Q#not comment |
| literal\E #more comment/x |
| abc#not comment\n literal |
| 0: abc#not comment\x0a literal |
| |
| /\Qabc\$xyz\E/ |
| abc\\\$xyz |
| 0: abc\$xyz |
| |
| /\Qabc\E\$\Qxyz\E/ |
| abc\$xyz |
| 0: abc$xyz |
| |
| /\Gabc/ |
| abc |
| 0: abc |
| \= Expect no match |
| xyzabc |
| No match |
| |
| /\Gabc./g |
| abc1abc2xyzabc3 |
| 0: abc1 |
| 0: abc2 |
| |
| /abc./g |
| abc1abc2xyzabc3 |
| 0: abc1 |
| 0: abc2 |
| 0: abc3 |
| |
| /a(?x: b c )d/ |
| XabcdY |
| 0: abcd |
| \= Expect no match |
| Xa b c d Y |
| No match |
| |
| /((?x)x y z | a b c)/ |
| XabcY |
| 0: abc |
| AxyzB |
| 0: xyz |
| |
| /(?i)AB(?-i)C/ |
| XabCY |
| 0: abC |
| \= Expect no match |
| XabcY |
| No match |
| |
| /((?i)AB(?-i)C|D)E/ |
| abCE |
| 0: abCE |
| DE |
| 0: DE |
| \= Expect no match |
| abcE |
| No match |
| abCe |
| No match |
| dE |
| No match |
| De |
| No match |
| |
| /[z\Qa-d]\E]/ |
| z |
| 0: z |
| a |
| 0: a |
| - |
| 0: - |
| d |
| 0: d |
| ] |
| 0: ] |
| \= Expect no match |
| b |
| No match |
| |
| /(a+)*b/ |
| \= Expect no match |
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
| No match |
| |
| /(?i)reg(?:ul(?:[aä]|ae)r|ex)/ |
| REGular |
| 0: REGular |
| regulaer |
| 0: regulaer |
| Regex |
| 0: Regex |
| regulär |
| 0: regul\xe4r |
| |
| /Åæåä[à-ÿÀ-ß]+/ |
| Åæåäà |
| 0: \xc5\xe6\xe5\xe4\xe0 |
| Åæåäÿ |
| 0: \xc5\xe6\xe5\xe4\xff |
| ÅæåäÀ |
| 0: \xc5\xe6\xe5\xe4\xc0 |
| Åæåäß |
| 0: \xc5\xe6\xe5\xe4\xdf |
| |
| /(?<=Z)X./ |
| \x84XAZXB |
| 0: XB |
| |
| /^(?(2)a|(1)(2))+$/ |
| 123a |
| Failed: error -40: backreference condition or recursion test is not supported for DFA matching |
| |
| /(?<=a|bbbb)c/ |
| ac |
| 0: c |
| bbbbc |
| 0: c |
| |
| /line\nbreak/ |
| this is a line\nbreak |
| 0: line\x0abreak |
| line one\nthis is a line\nbreak in the second line |
| 0: line\x0abreak |
| |
| /line\nbreak/firstline |
| this is a line\nbreak |
| 0: line\x0abreak |
| \= Expect no match |
| line one\nthis is a line\nbreak in the second line |
| No match |
| |
| /line\nbreak/m,firstline |
| this is a line\nbreak |
| 0: line\x0abreak |
| \= Expect no match |
| line one\nthis is a line\nbreak in the second line |
| No match |
| |
| /1234/ |
| 123\=ps |
| Partial match: 123 |
| \= Expect no match |
| a4\=ps,dfa_restart |
| No match |
| |
| /1234/ |
| 123\=ps |
| Partial match: 123 |
| 4\=ps,dfa_restart |
| 0: 4 |
| |
| /^/gm |
| a\nb\nc\n |
| 0: |
| 0: |
| 0: |
| \ |
| 0: |
| |
| /(?<=C\n)^/gm |
| A\nC\nC\n |
| 0: |
| |
| /(?s)A?B/ |
| AB |
| 0: AB |
| aB |
| 0: B |
| |
| /(?s)A*B/ |
| AB |
| 0: AB |
| aB |
| 0: B |
| |
| /(?m)A?B/ |
| AB |
| 0: AB |
| aB |
| 0: B |
| |
| /(?m)A*B/ |
| AB |
| 0: AB |
| aB |
| 0: B |
| |
| /Content-Type\x3A[^\r\n]{6,}/ |
| Content-Type:xxxxxyyy |
| 0: Content-Type:xxxxxyyy |
| |
| /Content-Type\x3A[^\r\n]{6,}z/ |
| Content-Type:xxxxxyyyz |
| 0: Content-Type:xxxxxyyyz |
| |
| /Content-Type\x3A[^a]{6,}/ |
| Content-Type:xxxyyy |
| 0: Content-Type:xxxyyy |
| |
| /Content-Type\x3A[^a]{6,}z/ |
| Content-Type:xxxyyyz |
| 0: Content-Type:xxxyyyz |
| |
| /^abc/Im,newline=lf |
| Capture group count = 0 |
| Options: multiline |
| Forced newline is LF |
| First code unit at start or follows newline |
| Last code unit = 'c' |
| Subject length lower bound = 3 |
| xyz\nabc |
| 0: abc |
| xyz\r\nabc |
| 0: abc |
| \= Expect no match |
| xyz\rabc |
| No match |
| xyzabc\r |
| No match |
| xyzabc\rpqr |
| No match |
| xyzabc\r\n |
| No match |
| xyzabc\r\npqr |
| No match |
| |
| /^abc/Im,newline=crlf |
| Capture group count = 0 |
| Options: multiline |
| Forced newline is CRLF |
| First code unit at start or follows newline |
| Last code unit = 'c' |
| Subject length lower bound = 3 |
| xyz\r\nabclf> |
| 0: abc |
| \= Expect no match |
| xyz\nabclf |
| No match |
| xyz\rabclf |
| No match |
| |
| /^abc/Im,newline=cr |
| Capture group count = 0 |
| Options: multiline |
| Forced newline is CR |
| First code unit at start or follows newline |
| Last code unit = 'c' |
| Subject length lower bound = 3 |
| xyz\rabc |
| 0: abc |
| \= Expect no match |
| xyz\nabc |
| No match |
| xyz\r\nabc |
| No match |
| |
| /.*/I,newline=lf |
| Capture group count = 0 |
| May match empty string |
| Forced newline is LF |
| First code unit at start or follows newline |
| Subject length lower bound = 0 |
| abc\ndef |
| 0: abc |
| abc\rdef |
| 0: abc\x0ddef |
| abc\r\ndef |
| 0: abc\x0d |
| |
| /.*/I,newline=cr |
| Capture group count = 0 |
| May match empty string |
| Forced newline is CR |
| First code unit at start or follows newline |
| Subject length lower bound = 0 |
| abc\ndef |
| 0: abc\x0adef |
| abc\rdef |
| 0: abc |
| abc\r\ndef |
| 0: abc |
| |
| /.*/I,newline=crlf |
| Capture group count = 0 |
| May match empty string |
| Forced newline is CRLF |
| First code unit at start or follows newline |
| Subject length lower bound = 0 |
| abc\ndef |
| 0: abc\x0adef |
| abc\rdef |
| 0: abc\x0ddef |
| abc\r\ndef |
| 0: abc |
| |
| /\w+(.)(.)?def/Is |
| Capture group count = 2 |
| Options: dotall |
| Starting code units: 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P |
| Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z |
| Last code unit = 'f' |
| Subject length lower bound = 5 |
| abc\ndef |
| 0: abc\x0adef |
| abc\rdef |
| 0: abc\x0ddef |
| abc\r\ndef |
| 0: abc\x0d\x0adef |
| |
| /\w+(.)(.)?def/s |
| abc\ndef |
| 0: abc\x0adef |
| abc\rdef |
| 0: abc\x0ddef |
| abc\r\ndef |
| 0: abc\x0d\x0adef |
| |
| /^\w+=.*(\\\n.*)*/ |
| abc=xyz\\\npqr |
| 0: abc=xyz\\x0apqr |
| 1: abc=xyz\\x0apq |
| 2: abc=xyz\\x0ap |
| 3: abc=xyz\\x0a |
| 4: abc=xyz\ |
| 5: abc=xyz |
| 6: abc=xy |
| 7: abc=x |
| 8: abc= |
| |
| /^(a()*)*/ |
| aaaa |
| 0: aaaa |
| 1: aaa |
| 2: aa |
| 3: a |
| 4: |
| |
| /^(?:a(?:(?:))*)*/ |
| aaaa |
| 0: aaaa |
| 1: aaa |
| 2: aa |
| 3: a |
| 4: |
| |
| /^(a()+)+/ |
| aaaa |
| 0: aaaa |
| 1: aaa |
| 2: aa |
| 3: a |
| |
| /^(?:a(?:(?:))+)+/ |
| aaaa |
| 0: aaaa |
| 1: aaa |
| 2: aa |
| 3: a |
| |
| /(a|)*\d/ |
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 |
| 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 |
| \= Expect no match |
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
| No match |
| |
| /(?>a|)*\d/ |
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 |
| 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 |
| \= Expect no match |
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
| No match |
| |
| /(?:a|)*\d/ |
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 |
| 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 |
| \= Expect no match |
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
| No match |
| |
| /^a.b/newline=lf |
| a\rb |
| 0: a\x0db |
| \= Expect no match |
| a\nb |
| No match |
| |
| /^a.b/newline=cr |
| a\nb |
| 0: a\x0ab |
| \= Expect no match |
| a\rb |
| No match |
| |
| /^a.b/newline=anycrlf |
| a\x85b |
| 0: a\x85b |
| \= Expect no match |
| a\rb |
| No match |
| |
| /^a.b/newline=any |
| \= Expect no match |
| a\nb |
| No match |
| a\rb |
| No match |
| a\x85b |
| No match |
| |
| /^abc./gmx,newline=any |
| abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 JUNK |
| 0: abc1 |
| 0: abc2 |
| 0: abc3 |
| 0: abc4 |
| 0: abc5 |
| 0: abc6 |
| 0: abc7 |
| |
| /abc.$/gmx,newline=any |
| abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc9 |
| 0: abc1 |
| 0: abc2 |
| 0: abc3 |
| 0: abc4 |
| 0: abc5 |
| 0: abc6 |
| 0: abc9 |
| |
| /^a\Rb/bsr=unicode |
| a\nb |
| 0: a\x0ab |
| a\rb |
| 0: a\x0db |
| a\r\nb |
| 0: a\x0d\x0ab |
| a\x0bb |
| 0: a\x0bb |
| a\x0cb |
| 0: a\x0cb |
| a\x85b |
| 0: a\x85b |
| \= Expect no match |
| a\n\rb |
| No match |
| |
| /^a\R*b/bsr=unicode |
| ab |
| 0: ab |
| a\nb |
| 0: a\x0ab |
| a\rb |
| 0: a\x0db |
| a\r\nb |
| 0: a\x0d\x0ab |
| a\x0bb |
| 0: a\x0bb |
| a\x0cb |
| 0: a\x0cb |
| a\x85b |
| 0: a\x85b |
| a\n\rb |
| 0: a\x0a\x0db |
| a\n\r\x85\x0cb |
| 0: a\x0a\x0d\x85\x0cb |
| |
| /^a\R+b/bsr=unicode |
| a\nb |
| 0: a\x0ab |
| a\rb |
| 0: a\x0db |
| a\r\nb |
| 0: a\x0d\x0ab |
| a\x0bb |
| 0: a\x0bb |
| a\x0cb |
| 0: a\x0cb |
| a\x85b |
| 0: a\x85b |
| a\n\rb |
| 0: a\x0a\x0db |
| a\n\r\x85\x0cb |
| 0: a\x0a\x0d\x85\x0cb |
| \= Expect no match |
| ab |
| No match |
| |
| /^a\R{1,3}b/bsr=unicode |
| a\nb |
| 0: a\x0ab |
| a\n\rb |
| 0: a\x0a\x0db |
| a\n\r\x85b |
| 0: a\x0a\x0d\x85b |
| a\r\n\r\nb |
| 0: a\x0d\x0a\x0d\x0ab |
| a\r\n\r\n\r\nb |
| 0: a\x0d\x0a\x0d\x0a\x0d\x0ab |
| a\n\r\n\rb |
| 0: a\x0a\x0d\x0a\x0db |
| a\n\n\r\nb |
| 0: a\x0a\x0a\x0d\x0ab |
| \= Expect no match |
| a\n\n\n\rb |
| No match |
| a\r |
| No match |
| |
| /.+foo/ |
| afoo |
| 0: afoo |
| \= Expect no match |
| \r\nfoo |
| No match |
| \nfoo |
| No match |
| |
| /.+foo/newline=crlf |
| afoo |
| 0: afoo |
| \nfoo |
| 0: \x0afoo |
| \= Expect no match |
| \r\nfoo |
| No match |
| |
| /.+foo/newline=any |
| afoo |
| 0: afoo |
| \= Expect no match |
| \nfoo |
| No match |
| \r\nfoo |
| No match |
| |
| /.+foo/s |
| afoo |
| 0: afoo |
| \r\nfoo |
| 0: \x0d\x0afoo |
| \nfoo |
| 0: \x0afoo |
| |
| /^$/gm,newline=any |
| abc\r\rxyz |
| 0: |
| abc\n\rxyz |
| 0: |
| \= Expect no match |
| abc\r\nxyz |
| No match |
| |
| /^X/m |
| XABC |
| 0: X |
| \= Expect no match |
| XABC\=notbol |
| No match |
| |
| /(?m)^$/g,newline=any,aftertext |
| abc\r\n\r\n |
| 0: |
| 0+ \x0d\x0a |
| |
| /(?m)^$|^\r\n/g,newline=any,aftertext |
| abc\r\n\r\n |
| 0: \x0d\x0a |
| 0+ |
| 1: |
| |
| /(?m)$/g,newline=any,aftertext |
| abc\r\n\r\n |
| 0: |
| 0+ \x0d\x0a\x0d\x0a |
| 0: |
| 0+ \x0d\x0a |
| 0: |
| 0+ |
| |
| /(?|(abc)|(xyz))/ |
| >abc< |
| 0: abc |
| >xyz< |
| 0: xyz |
| |
| /(x)(?|(abc)|(xyz))(x)/ |
| xabcx |
| 0: xabcx |
| xxyzx |
| 0: xxyzx |
| |
| /(x)(?|(abc)(pqr)|(xyz))(x)/ |
| xabcpqrx |
| 0: xabcpqrx |
| xxyzx |
| 0: xxyzx |
| |
| /(?|(abc)|(xyz))(?1)/ |
| abcabc |
| 0: abcabc |
| xyzabc |
| 0: xyzabc |
| \= Expect no match |
| xyzxyz |
| No match |
| |
| /\H\h\V\v/ |
| X X\x0a |
| 0: X X\x0a |
| X\x09X\x0b |
| 0: X\x09X\x0b |
| \= Expect no match |
| \xa0 X\x0a |
| No match |
| |
| /\H*\h+\V?\v{3,4}/ |
| \x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a |
| 0: \x09 \xa0X\x0a\x0b\x0c\x0d |
| \x09\x20\xa0\x0a\x0b\x0c\x0d\x0a |
| 0: \x09 \xa0\x0a\x0b\x0c\x0d |
| \x09\x20\xa0\x0a\x0b\x0c |
| 0: \x09 \xa0\x0a\x0b\x0c |
| \= Expect no match |
| \x09\x20\xa0\x0a\x0b |
| No match |
| |
| /\H{3,4}/ |
| XY ABCDE |
| 0: ABCD |
| XY PQR ST |
| 0: PQR |
| |
| /.\h{3,4}./ |
| XY AB PQRS |
| 0: B P |
| 1: B |
| |
| /\h*X\h?\H+Y\H?Z/ |
| >XNNNYZ |
| 0: XNNNYZ |
| > X NYQZ |
| 0: X NYQZ |
| \= Expect no match |
| >XYZ |
| No match |
| > X NY Z |
| No match |
| |
| /\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/ |
| >XY\x0aZ\x0aA\x0bNN\x0c |
| 0: XY\x0aZ\x0aA\x0bNN\x0c |
| >\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c |
| 0: \x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c |
| |
| /.+A/newline=crlf |
| \= Expect no match |
| \r\nA |
| No match |
| |
| /\nA/newline=crlf |
| \r\nA |
| 0: \x0aA |
| |
| /[\r\n]A/newline=crlf |
| \r\nA |
| 0: \x0aA |
| |
| /(\r|\n)A/newline=crlf |
| \r\nA |
| 0: \x0aA |
| |
| /a\Rb/I,bsr=anycrlf |
| Capture group count = 0 |
| \R matches CR, LF, or CRLF |
| First code unit = 'a' |
| Last code unit = 'b' |
| Subject length lower bound = 3 |
| a\rb |
| 0: a\x0db |
| a\nb |
| 0: a\x0ab |
| a\r\nb |
| 0: a\x0d\x0ab |
| \= Expect no match |
| a\x85b |
| No match |
| a\x0bb |
| No match |
| |
| /a\Rb/I,bsr=unicode |
| Capture group count = 0 |
| \R matches any Unicode newline |
| First code unit = 'a' |
| Last code unit = 'b' |
| Subject length lower bound = 3 |
| a\rb |
| 0: a\x0db |
| a\nb |
| 0: a\x0ab |
| a\r\nb |
| 0: a\x0d\x0ab |
| a\x85b |
| 0: a\x85b |
| a\x0bb |
| 0: a\x0bb |
| |
| /a\R?b/I,bsr=anycrlf |
| Capture group count = 0 |
| \R matches CR, LF, or CRLF |
| First code unit = 'a' |
| Last code unit = 'b' |
| Subject length lower bound = 2 |
| a\rb |
| 0: a\x0db |
| a\nb |
| 0: a\x0ab |
| a\r\nb |
| 0: a\x0d\x0ab |
| \= Expect no match |
| a\x85b |
| No match |
| a\x0bb |
| No match |
| |
| /a\R?b/I,bsr=unicode |
| Capture group count = 0 |
| \R matches any Unicode newline |
| First code unit = 'a' |
| Last code unit = 'b' |
| Subject length lower bound = 2 |
| a\rb |
| 0: a\x0db |
| a\nb |
| 0: a\x0ab |
| a\r\nb |
| 0: a\x0d\x0ab |
| a\x85b |
| 0: a\x85b |
| a\x0bb |
| 0: a\x0bb |
| |
| /a\R{2,4}b/I,bsr=anycrlf |
| Capture group count = 0 |
| \R matches CR, LF, or CRLF |
| First code unit = 'a' |
| Last code unit = 'b' |
| Subject length lower bound = 4 |
| a\r\n\nb |
| 0: a\x0d\x0a\x0ab |
| a\n\r\rb |
| 0: a\x0a\x0d\x0db |
| a\r\n\r\n\r\n\r\nb |
| 0: a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0ab |
| \= Expect no match |
| a\x0b\x0bb |
| No match |
| a\x85\x85b |
| No match |
| |
| /a\R{2,4}b/I,bsr=unicode |
| Capture group count = 0 |
| \R matches any Unicode newline |
| First code unit = 'a' |
| Last code unit = 'b' |
| Subject length lower bound = 4 |
| a\r\rb |
| 0: a\x0d\x0db |
| a\n\n\nb |
| 0: a\x0a\x0a\x0ab |
| a\r\n\n\r\rb |
| 0: a\x0d\x0a\x0a\x0d\x0db |
| a\x85\x85b |
| 0: a\x85\x85b |
| a\x0b\x0bb |
| 0: a\x0b\x0bb |
| \= Expect no match |
| a\r\r\r\r\rb |
| No match |
| |
| /a(?!)|\wbc/ |
| abc |
| 0: abc |
| |
| /a[]b/alt_bsux,allow_empty_class,match_unset_backref,dupnames |
| \= Expect no match |
| ab |
| No match |
| |
| /a[]+b/alt_bsux,allow_empty_class,match_unset_backref,dupnames |
| \= Expect no match |
| ab |
| No match |
| |
| /a[]*+b/alt_bsux,allow_empty_class,match_unset_backref,dupnames |
| \= Expect no match |
| ab |
| No match |
| |
| /a[^]b/alt_bsux,allow_empty_class,match_unset_backref,dupnames |
| aXb |
| 0: aXb |
| a\nb |
| 0: a\x0ab |
| \= Expect no match |
| ab |
| No match |
| |
| /a[^]+b/alt_bsux,allow_empty_class,match_unset_backref,dupnames |
| aXb |
| 0: aXb |
| a\nX\nXb |
| 0: a\x0aX\x0aXb |
| \= Expect no match |
| ab |
| No match |
| |
| /X$/dollar_endonly |
| X |
| 0: X |
| \= Expect no match |
| X\n |
| No match |
| |
| /X$/ |
| X |
| 0: X |
| X\n |
| 0: X |
| |
| /xyz/auto_callout |
| xyz |
| --->xyz |
| +0 ^ x |
| +1 ^^ y |
| +2 ^ ^ z |
| +3 ^ ^ End of pattern |
| 0: xyz |
| abcxyz |
| --->abcxyz |
| +0 ^ x |
| +1 ^^ y |
| +2 ^ ^ z |
| +3 ^ ^ End of pattern |
| 0: xyz |
| \= Expect no match |
| abc |
| No match |
| abcxypqr |
| No match |
| |
| /xyz/auto_callout,no_start_optimize |
| abcxyz |
| --->abcxyz |
| +0 ^ x |
| +0 ^ x |
| +0 ^ x |
| +0 ^ x |
| +1 ^^ y |
| +2 ^ ^ z |
| +3 ^ ^ End of pattern |
| 0: xyz |
| \= Expect no match |
| abc |
| --->abc |
| +0 ^ x |
| +0 ^ x |
| +0 ^ x |
| +0 ^ x |
| No match |
| abcxypqr |
| --->abcxypqr |
| +0 ^ x |
| +0 ^ x |
| +0 ^ x |
| +0 ^ x |
| +1 ^^ y |
| +2 ^ ^ z |
| +0 ^ x |
| +0 ^ x |
| +0 ^ x |
| +0 ^ x |
| +0 ^ x |
| No match |
| |
| /(*NO_START_OPT)xyz/auto_callout |
| abcxyz |
| --->abcxyz |
| +15 ^ x |
| +15 ^ x |
| +15 ^ x |
| +15 ^ x |
| +16 ^^ y |
| +17 ^ ^ z |
| +18 ^ ^ End of pattern |
| 0: xyz |
| |
| /(?C)ab/ |
| ab |
| --->ab |
| 0 ^ a |
| 0: ab |
| ab\=callout_none |
| 0: ab |
| |
| /ab/auto_callout |
| ab |
| --->ab |
| +0 ^ a |
| +1 ^^ b |
| +2 ^ ^ End of pattern |
| 0: ab |
| ab\=callout_none |
| 0: ab |
| |
| /^"((?(?=[a])[^"])|b)*"$/auto_callout |
| "ab" |
| --->"ab" |
| +0 ^ ^ |
| +1 ^ " |
| +2 ^^ ( |
| +21 ^^ " |
| +3 ^^ (? |
| +18 ^^ b |
| +5 ^^ (?= |
| +8 ^ [a] |
| +11 ^^ ) |
| +12 ^^ [^"] |
| +16 ^ ^ ) |
| +17 ^ ^ | |
| +21 ^ ^ " |
| +3 ^ ^ (? |
| +18 ^ ^ b |
| +5 ^ ^ (?= |
| +8 ^ [a] |
| +19 ^ ^ )* |
| +21 ^ ^ " |
| +3 ^ ^ (? |
| +18 ^ ^ b |
| +5 ^ ^ (?= |
| +8 ^ [a] |
| +17 ^ ^ | |
| +22 ^ ^ $ |
| +23 ^ ^ End of pattern |
| 0: "ab" |
| "ab"\=callout_none |
| 0: "ab" |
| |
| /\d+X|9+Y/ |
| ++++123999\=ps |
| Partial match: 123999 |
| ++++123999Y\=ps |
| 0: 999Y |
| |
| /Z(*F)/ |
| \= Expect no match |
| Z\=ps |
| No match |
| ZA\=ps |
| No match |
| |
| /Z(?!)/ |
| \= Expect no match |
| Z\=ps |
| No match |
| ZA\=ps |
| No match |
| |
| /dog(sbody)?/ |
| dogs\=ps |
| 0: dog |
| dogs\=ph |
| Partial match: dogs |
| |
| /dog(sbody)??/ |
| dogs\=ps |
| 0: dog |
| dogs\=ph |
| Partial match: dogs |
| |
| /dog|dogsbody/ |
| dogs\=ps |
| 0: dog |
| dogs\=ph |
| Partial match: dogs |
| |
| /dogsbody|dog/ |
| dogs\=ps |
| 0: dog |
| dogs\=ph |
| Partial match: dogs |
| |
| /Z(*F)Q|ZXY/ |
| Z\=ps |
| Partial match: Z |
| \= Expect no match |
| ZA\=ps |
| No match |
| X\=ps |
| No match |
| |
| /\bthe cat\b/ |
| the cat\=ps |
| 0: the cat |
| the cat\=ph |
| Partial match: the cat |
| |
| /dog(sbody)?/ |
| dogs\=ps |
| 0: dog |
| body\=dfa_restart |
| 0: body |
| |
| /dog(sbody)?/ |
| dogs\=ph |
| Partial match: dogs |
| body\=dfa_restart |
| 0: body |
| |
| /abc/ |
| abc\=ps |
| 0: abc |
| abc\=ph |
| 0: abc |
| |
| /abc\K123/ |
| xyzabc123pqr |
| Failed: error -42: pattern contains an item that is not supported for DFA matching |
| |
| /(?<=abc)123/allusedtext |
| xyzabc123pqr |
| 0: abc123 |
| <<< |
| xyzabc12\=ps |
| Partial match: abc12 |
| <<< |
| xyzabc12\=ph |
| Partial match: abc12 |
| <<< |
| |
| /\babc\b/allusedtext |
| +++abc+++ |
| 0: +abc+ |
| < > |
| +++ab\=ps |
| Partial match: +ab |
| < |
| +++ab\=ph |
| Partial match: +ab |
| < |
| |
| /(?=C)/g,aftertext |
| ABCDECBA |
| 0: |
| 0+ CDECBA |
| 0: |
| 0+ CBA |
| |
| /(abc|def|xyz)/I |
| Capture group count = 1 |
| Starting code units: a d x |
| Subject length lower bound = 3 |
| terhjk;abcdaadsfe |
| 0: abc |
| the quick xyz brown fox |
| 0: xyz |
| \= Expect no match |
| thejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd |
| No match |
| |
| /(abc|def|xyz)/I,no_start_optimize |
| Capture group count = 1 |
| Options: no_start_optimize |
| terhjk;abcdaadsfe |
| 0: abc |
| the quick xyz brown fox |
| 0: xyz |
| \= Expect no match |
| thejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd |
| No match |
| |
| /abcd*/aftertext |
| xxxxabcd\=ps |
| 0: abcd |
| 0+ |
| xxxxabcd\=ph |
| Partial match: abcd |
| dddxxx\=dfa_restart |
| 0: ddd |
| 0+ xxx |
| xxxxabcd\=ph |
| Partial match: abcd |
| xxx\=dfa_restart |
| 0: |
| 0+ xxx |
| |
| /abcd*/i |
| xxxxabcd\=ps |
| 0: abcd |
| xxxxabcd\=ph |
| Partial match: abcd |
| XXXXABCD\=ps |
| 0: ABCD |
| XXXXABCD\=ph |
| Partial match: ABCD |
| |
| /abc\d*/ |
| xxxxabc1\=ps |
| 0: abc1 |
| xxxxabc1\=ph |
| Partial match: abc1 |
| |
| /abc[de]*/ |
| xxxxabcde\=ps |
| 0: abcde |
| xxxxabcde\=ph |
| Partial match: abcde |
| |
| /(?:(?1)|B)(A(*F)|C)/ |
| ABCD |
| 0: BC |
| CCD |
| 0: CC |
| \= Expect no match |
| CAD |
| No match |
| |
| /^(?:(?1)|B)(A(*F)|C)/ |
| CCD |
| 0: CC |
| BCD |
| 0: BC |
| \= Expect no match |
| ABCD |
| No match |
| CAD |
| No match |
| BAD |
| No match |
| |
| /^(?!a(*SKIP)b)/ |
| ac |
| Failed: error -42: pattern contains an item that is not supported for DFA matching |
| |
| /^(?=a(*SKIP)b|ac)/ |
| ac |
| Failed: error -42: pattern contains an item that is not supported for DFA matching |
| |
| /^(?=a(*THEN)b|ac)/ |
| ac |
| Failed: error -42: pattern contains an item that is not supported for DFA matching |
| |
| /^(?=a(*PRUNE)b)/ |
| ab |
| Failed: error -42: pattern contains an item that is not supported for DFA matching |
| |
| /^(?(?!a(*SKIP)b))/ |
| ac |
| Failed: error -42: pattern contains an item that is not supported for DFA matching |
| |
| /(?<=abc)def/allusedtext |
| abc\=ph |
| Partial match: abc |
| <<< |
| |
| /abc$/ |
| abc |
| 0: abc |
| abc\=ps |
| 0: abc |
| abc\=ph |
| Partial match: abc |
| |
| /abc$/m |
| abc |
| 0: abc |
| abc\n |
| 0: abc |
| abc\=ph |
| Partial match: abc |
| abc\n\=ph |
| 0: abc |
| abc\=ps |
| 0: abc |
| abc\n\=ps |
| 0: abc |
| |
| /abc\z/ |
| abc |
| 0: abc |
| abc\=ps |
| 0: abc |
| abc\=ph |
| Partial match: abc |
| |
| /abc\Z/ |
| abc |
| 0: abc |
| abc\=ps |
| 0: abc |
| abc\=ph |
| Partial match: abc |
| |
| /abc\b/ |
| abc |
| 0: abc |
| abc\=ps |
| 0: abc |
| abc\=ph |
| Partial match: abc |
| |
| /abc\B/ |
| abc\=ps |
| Partial match: abc |
| abc\=ph |
| Partial match: abc |
| \= Expect no match |
| abc |
| No match |
| |
| /.+/ |
| abc\=offset=0 |
| 0: abc |
| abc\=offset=1 |
| 0: bc |
| abc\=offset=2 |
| 0: c |
| \= Bad offsets |
| abc\=offset=4 |
| Failed: error -33: bad offset value |
| abc\=offset=-4 |
| ** Invalid value in 'offset=-4' |
| \= Expect no match |
| abc\=offset=3 |
| No match |
| |
| /^(?:a)++\w/ |
| aaaab |
| 0: aaaab |
| \= Expect no match |
| aaaa |
| No match |
| bbb |
| No match |
| |
| /^(?:aa|(?:a)++\w)/ |
| aaaab |
| 0: aaaab |
| 1: aa |
| aaaa |
| 0: aa |
| \= Expect no match |
| bbb |
| No match |
| |
| /^(?:a)*+\w/ |
| aaaab |
| 0: aaaab |
| bbb |
| 0: b |
| \= Expect no match |
| aaaa |
| No match |
| |
| /^(a)++\w/ |
| aaaab |
| 0: aaaab |
| \= Expect no match |
| aaaa |
| No match |
| bbb |
| No match |
| |
| /^(a|)++\w/ |
| aaaab |
| 0: aaaab |
| \= Expect no match |
| aaaa |
| No match |
| bbb |
| No match |
| |
| /(?=abc){3}abc/aftertext |
| abcabcabc |
| 0: abc |
| 0+ abcabc |
| \= Expect no match |
| xyz |
| No match |
| |
| /(?=abc)+abc/aftertext |
| abcabcabc |
| 0: abc |
| 0+ abcabc |
| \= Expect no match |
| xyz |
| No match |
| |
| /(?=abc)++abc/aftertext |
| abcabcabc |
| 0: abc |
| 0+ abcabc |
| \= Expect no match |
| xyz |
| No match |
| |
| /(?=abc){0}xyz/ |
| xyz |
| 0: xyz |
| |
| /(?=abc){1}xyz/ |
| \= Expect no match |
| xyz |
| No match |
| |
| /(?=(a))?./ |
| ab |
| 0: a |
| bc |
| 0: b |
| |
| /(?=(a))??./ |
| ab |
| 0: a |
| bc |
| 0: b |
| |
| /^(?=(a)){0}b(?1)/ |
| backgammon |
| 0: ba |
| |
| /^(?=(?1))?[az]([abc])d/ |
| abd |
| 0: abd |
| zcdxx |
| 0: zcd |
| |
| /^(?!a){0}\w+/ |
| aaaaa |
| 0: aaaaa |
| |
| /(?<=(abc))?xyz/ |
| abcxyz |
| 0: xyz |
| pqrxyz |
| 0: xyz |
| |
| /((?2))((?1))/ |
| abc |
| Failed: error -52: nested recursion at the same subject position |
| |
| /(?(R)a+|(?R)b)/ |
| aaaabcde |
| 0: aaaab |
| |
| /(?(R)a+|((?R))b)/ |
| aaaabcde |
| 0: aaaab |
| |
| /((?(R)a+|(?1)b))/ |
| aaaabcde |
| 0: aaaab |
| |
| /((?(R2)a+|(?1)b))()/ |
| aaaabcde |
| Failed: error -40: backreference condition or recursion test is not supported for DFA matching |
| |
| /(?(R)a*(?1)|((?R))b)/ |
| aaaabcde |
| Failed: error -52: nested recursion at the same subject position |
| |
| /(a+)/no_auto_possess |
| aaaa\=ovector=3 |
| Matched, but offsets vector is too small to show all matches |
| 0: aaaa |
| 1: aaa |
| 2: aa |
| aaaa\=ovector=4 |
| 0: aaaa |
| 1: aaa |
| 2: aa |
| 3: a |
| |
| /^\R/ |
| \r\=ps |
| 0: \x0d |
| \r\=ph |
| Partial match: \x0d |
| |
| /^\R{2,3}x/ |
| \r\=ps |
| Partial match: \x0d |
| \r\=ph |
| Partial match: \x0d |
| \r\r\=ps |
| Partial match: \x0d\x0d |
| \r\r\=ph |
| Partial match: \x0d\x0d |
| \r\r\r\=ps |
| Partial match: \x0d\x0d\x0d |
| \r\r\r\=ph |
| Partial match: \x0d\x0d\x0d |
| \r\rx |
| 0: \x0d\x0dx |
| \r\r\rx |
| 0: \x0d\x0d\x0dx |
| |
| /^\R{2,3}?x/ |
| \r\=ps |
| Partial match: \x0d |
| \r\=ph |
| Partial match: \x0d |
| \r\r\=ps |
| Partial match: \x0d\x0d |
| \r\r\=ph |
| Partial match: \x0d\x0d |
| \r\r\r\=ps |
| Partial match: \x0d\x0d\x0d |
| \r\r\r\=ph |
| Partial match: \x0d\x0d\x0d |
| \r\rx |
| 0: \x0d\x0dx |
| \r\r\rx |
| 0: \x0d\x0d\x0dx |
| |
| /^\R?x/ |
| \r\=ps |
| Partial match: \x0d |
| \r\=ph |
| Partial match: \x0d |
| x |
| 0: x |
| \rx |
| 0: \x0dx |
| |
| /^\R+x/ |
| \r\=ps |
| Partial match: \x0d |
| \r\=ph |
| Partial match: \x0d |
| \r\n\=ps |
| Partial match: \x0d\x0a |
| \r\n\=ph |
| Partial match: \x0d\x0a |
| \rx |
| 0: \x0dx |
| |
| /^a$/newline=crlf |
| a\r\=ps |
| Partial match: a\x0d |
| a\r\=ph |
| Partial match: a\x0d |
| |
| /^a$/m,newline=crlf |
| a\r\=ps |
| Partial match: a\x0d |
| a\r\=ph |
| Partial match: a\x0d |
| |
| /^(a$|a\r)/newline=crlf |
| a\r\=ps |
| 0: a\x0d |
| a\r\=ph |
| Partial match: a\x0d |
| |
| /^(a$|a\r)/m,newline=crlf |
| a\r\=ps |
| 0: a\x0d |
| a\r\=ph |
| Partial match: a\x0d |
| |
| /./newline=crlf |
| \r\=ps |
| 0: \x0d |
| \r\=ph |
| Partial match: \x0d |
| |
| /.{2,3}/newline=crlf |
| \r\=ps |
| Partial match: \x0d |
| \r\=ph |
| Partial match: \x0d |
| \r\r\=ps |
| 0: \x0d\x0d |
| \r\r\=ph |
| Partial match: \x0d\x0d |
| \r\r\r\=ps |
| 0: \x0d\x0d\x0d |
| \r\r\r\=ph |
| Partial match: \x0d\x0d\x0d |
| |
| /.{2,3}?/newline=crlf |
| \r\=ps |
| Partial match: \x0d |
| \r\=ph |
| Partial match: \x0d |
| \r\r\=ps |
| 0: \x0d\x0d |
| \r\r\=ph |
| Partial match: \x0d\x0d |
| \r\r\r\=ps |
| 0: \x0d\x0d\x0d |
| 1: \x0d\x0d |
| \r\r\r\=ph |
| Partial match: \x0d\x0d\x0d |
| |
| # Test simple validity check for restarts |
| |
| /abcdef/ |
| abc\=dfa_restart |
| Failed: error -38: invalid data in workspace for DFA restart |
| |
| /<H((?(?!<H|F>)(.)|(?R))++)*F>/ |
| text <H more text <H texting more hexA0-"\xA0" hex above 7F-"\xBC" F> text xxxxx <H text F> text F> text2 <H text sample F> more text. |
| 0: <H more text <H texting more hexA0-"\xa0" hex above 7F-"\xbc" F> text xxxxx <H text F> text F> |
| |
| /^(?>.{4})abc|^\w\w.xabcd/ |
| xxxxabcd |
| 0: xxxxabcd |
| 1: xxxxabc |
| xx\xa0xabcd |
| 0: xx\xa0xabcd |
| 1: xx\xa0xabc |
| |
| /^(.{4}){2}+abc|^\w\w.x\w\w\w\wabcd/ |
| xxxxxxxxabcd |
| 0: xxxxxxxxabcd |
| 1: xxxxxxxxabc |
| xx\xa0xxxxxabcd |
| 0: xx\xa0xxxxxabcd |
| 1: xx\xa0xxxxxabc |
| |
| /abcd/ |
| abcd\=ovector=0 |
| 0: abcd |
| |
| # These tests show up auto-possessification |
| |
| /[ab]*/ |
| aaaa |
| 0: aaaa |
| |
| /[ab]*?/ |
| aaaa |
| 0: aaaa |
| 1: aaa |
| 2: aa |
| 3: a |
| 4: |
| |
| /[ab]?/ |
| aaaa |
| 0: a |
| |
| /[ab]??/ |
| aaaa |
| 0: a |
| 1: |
| |
| /[ab]+/ |
| aaaa |
| 0: aaaa |
| |
| /[ab]+?/ |
| aaaa |
| 0: aaaa |
| 1: aaa |
| 2: aa |
| 3: a |
| |
| /[ab]{2,3}/ |
| aaaa |
| 0: aaa |
| |
| /[ab]{2,3}?/ |
| aaaa |
| 0: aaa |
| 1: aa |
| |
| /[ab]{2,}/ |
| aaaa |
| 0: aaaa |
| |
| /[ab]{2,}?/ |
| aaaa |
| 0: aaaa |
| 1: aaa |
| 2: aa |
| |
| '\A(?:[^\"]++|\"(?:[^\"]*+|\"\")*+\")++' |
| NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED |
| 0: NON QUOTED "QUOT""ED" AFTER |
| |
| '\A(?:[^\"]++|\"(?:[^\"]++|\"\")*+\")++' |
| NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED |
| 0: NON QUOTED "QUOT""ED" AFTER |
| |
| /abc(?=xyz)/allusedtext |
| abcxyzpqr |
| 0: abcxyz |
| >>> |
| abcxyzpqr\=aftertext |
| 0: abcxyz |
| >>> |
| 0+ xyzpqr |
| |
| /(?<=pqr)abc(?=xyz)/allusedtext |
| xyzpqrabcxyzpqr |
| 0: pqrabcxyz |
| <<< >>> |
| xyzpqrabcxyzpqr\=aftertext |
| 0: pqrabcxyz |
| <<< >>> |
| 0+ xyzpqr |
| |
| /a\b/ |
| a.\=allusedtext |
| 0: a. |
| > |
| a\=allusedtext |
| 0: a |
| |
| /abc(?=abcde)(?=ab)/allusedtext |
| abcabcdefg |
| 0: abcabcde |
| >>>>> |
| |
| /a*?b*?/ |
| ab |
| 0: ab |
| 1: a |
| 2: |
| |
| /(*NOTEMPTY)a*?b*?/ |
| ab |
| 0: ab |
| 1: a |
| ba |
| 0: b |
| cb |
| 0: b |
| |
| /(*NOTEMPTY_ATSTART)a*?b*?/aftertext |
| ab |
| 0: ab |
| 0+ |
| 1: a |
| cdab |
| 0: |
| 0+ dab |
| |
| /(a)(b)|(c)/ |
| XcX\=ovector=2,get=1,get=2,get=3,get=4,getall |
| 0: c |
| Get substring 1 failed (-55): requested value is not set |
| Get substring 2 failed (-54): requested value is not available |
| Get substring 3 failed (-54): requested value is not available |
| Get substring 4 failed (-54): requested value is not available |
| 0L c |
| |
| /(?<A>aa)/ |
| aa\=get=A |
| 0: aa |
| Get substring 'A' failed (-41): function is not supported for DFA matching |
| aa\=copy=A |
| 0: aa |
| Copy substring 'A' failed (-41): function is not supported for DFA matching |
| |
| /a+/no_auto_possess |
| a\=ovector=2,get=1,get=2,getall |
| 0: a |
| Get substring 1 failed (-55): requested value is not set |
| Get substring 2 failed (-54): requested value is not available |
| 0L a |
| aaa\=ovector=2,get=1,get=2,getall |
| Matched, but offsets vector is too small to show all matches |
| 0: aaa |
| 1: aa |
| 1G aa (2) |
| Get substring 2 failed (-54): requested value is not available |
| 0L aaa |
| 1L aa |
| |
| /a(b)c(d)/ |
| abc\=ph,copy=0,copy=1,getall |
| Partial match: abc |
| 0C abc (3) |
| Copy substring 1 failed (-2): partial match |
| get substring list failed (-2): partial match |
| |
| /ab(?C" any text with spaces ")cde/B |
| ------------------------------------------------------------------ |
| Bra |
| ab |
| CalloutStr " any text with spaces " 6 30 1 |
| cde |
| Ket |
| End |
| ------------------------------------------------------------------ |
| abcde |
| Callout (6): " any text with spaces " |
| --->abcde |
| ^ ^ c |
| 0: abcde |
| 12abcde |
| Callout (6): " any text with spaces " |
| --->12abcde |
| ^ ^ c |
| 0: abcde |
| |
| /^a(b)c(?C1)def/ |
| abcdef |
| --->abcdef |
| 1 ^ ^ d |
| 0: abcdef |
| |
| /^a(b)c(?C"AB")def/ |
| abcdef |
| Callout (10): "AB" |
| --->abcdef |
| ^ ^ d |
| 0: abcdef |
| |
| /^a(b)c(?C1)def/ |
| abcdef\=callout_capture |
| Callout 1: last capture = 0 |
| --->abcdef |
| ^ ^ d |
| 0: abcdef |
| |
| /^a(b)c(?C{AB})def/B |
| ------------------------------------------------------------------ |
| Bra |
| ^ |
| a |
| CBra 1 |
| b |
| Ket |
| c |
| CalloutStr {AB} 10 14 1 |
| def |
| Ket |
| End |
| ------------------------------------------------------------------ |
| abcdef\=callout_capture |
| Callout (10): {AB} last capture = 0 |
| --->abcdef |
| ^ ^ d |
| 0: abcdef |
| |
| /^(?(?C25)(?=abc)abcd|xyz)/B |
| ------------------------------------------------------------------ |
| Bra |
| ^ |
| Cond |
| Callout 25 9 3 |
| Assert |
| abc |
| Ket |
| abcd |
| Alt |
| xyz |
| Ket |
| Ket |
| End |
| ------------------------------------------------------------------ |
| abcdefg |
| --->abcdefg |
| 25 ^ (?= |
| 0: abcd |
| xyz123 |
| --->xyz123 |
| 25 ^ (?= |
| 0: xyz |
| |
| /^(?(?C$abc$)(?=abc)abcd|xyz)/B |
| ------------------------------------------------------------------ |
| Bra |
| ^ |
| Cond |
| CalloutStr $abc$ 7 12 3 |
| Assert |
| abc |
| Ket |
| abcd |
| Alt |
| xyz |
| Ket |
| Ket |
| End |
| ------------------------------------------------------------------ |
| abcdefg |
| Callout (7): $abc$ |
| --->abcdefg |
| ^ (?= |
| 0: abcd |
| xyz123 |
| Callout (7): $abc$ |
| --->xyz123 |
| ^ (?= |
| 0: xyz |
| |
| /^ab(?C'first')cd(?C"second")ef/ |
| abcdefg |
| Callout (7): 'first' |
| --->abcdefg |
| ^ ^ c |
| Callout (20): "second" |
| --->abcdefg |
| ^ ^ e |
| 0: abcdef |
| |
| /(?:a(?C`code`)){3}X/ |
| aaaXY |
| Callout (8): `code` |
| --->aaaXY |
| ^^ ){3} |
| Callout (8): `code` |
| --->aaaXY |
| ^ ^ ){3} |
| Callout (8): `code` |
| --->aaaXY |
| ^ ^ ){3} |
| 0: aaaX |
| |
| # Binary zero in callout string |
| /"a(?C'x" 00 "z')b"/hex |
| abcdefgh |
| Callout (5): 'x\x00z' |
| --->abcdefgh |
| ^^ b |
| 0: ab |
| |
| /(?(?!)a|b)/ |
| bbb |
| 0: b |
| \= Expect no match |
| aaa |
| No match |
| |
| /^/gm |
| \n\n\n |
| 0: |
| 0: |
| 0: |
| |
| /^/gm,alt_circumflex |
| \n\n\n |
| 0: |
| 0: |
| 0: |
| 0: |
| |
| /abc/use_offset_limit |
| 1234abcde\=offset_limit=100 |
| 0: abc |
| 1234abcde\=offset_limit=9 |
| 0: abc |
| 1234abcde\=offset_limit=4 |
| 0: abc |
| 1234abcde\=offset_limit=4,offset=4 |
| 0: abc |
| \= Expect no match |
| 1234abcde\=offset_limit=4,offset=5 |
| No match |
| 1234abcde\=offset_limit=3 |
| No match |
| |
| /(?<=abc)/use_offset_limit |
| 1234abc\=offset_limit=7 |
| 0: |
| \= Expect no match |
| 1234abc\=offset_limit=6 |
| No match |
| |
| /abcd/null_context |
| abcd\=null_context |
| 0: abcd |
| |
| /()()a+/no_auto_possess |
| aaa\=allcaptures |
| ** Ignored after DFA matching: allcaptures |
| 0: aaa |
| 1: aa |
| 2: a |
| a\=allcaptures |
| ** Ignored after DFA matching: allcaptures |
| 0: a |
| |
| /(*LIMIT_DEPTH=100)^((.)(?1)|.)$/ |
| \= Expect depth limit exceeded |
| a[00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00] |
| Failed: error -53: matching depth limit exceeded |
| |
| /(*LIMIT_HEAP=0)^((.)(?1)|.)$/ |
| \= Expect heap limit exceeded |
| a[00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00] |
| Failed: error -63: heap limit exceeded |
| |
| /(*LIMIT_HEAP=50000)^((.)(?1)|.)$/ |
| \= Expect success |
| a[00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00] |
| 0: a[00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00] |
| |
| /(02-)?[0-9]{3}-[0-9]{3}/ |
| 02-123-123 |
| 0: 02-123-123 |
| |
| /^(a(?2))(b)(?1)/ |
| abbab\=find_limits |
| Minimum heap limit = 0 |
| Minimum match limit = 4 |
| Minimum depth limit = 2 |
| 0: abbab |
| |
| /abc/endanchored |
| xyzabc |
| 0: abc |
| \= Expect no match |
| xyzabcdef |
| No match |
| \= Expect error |
| xyzabc\=ph |
| Failed: error -34: bad option value |
| |
| /abc/ |
| xyzabc\=endanchored |
| 0: abc |
| \= Expect no match |
| xyzabcdef\=endanchored |
| No match |
| \= Expect error |
| xyzabc\=ps,endanchored |
| Failed: error -34: bad option value |
| |
| /abc|bcd/endanchored |
| xyzabcd |
| 0: bcd |
| \= Expect no match |
| xyzabcdef |
| No match |
| |
| /(*NUL)^.*/ |
| a\nb\x00ccc |
| 0: a\x0ab |
| |
| /(*NUL)^.*/s |
| a\nb\x00ccc |
| 0: a\x0ab\x00ccc |
| |
| /^x/m,newline=nul |
| ab\x00xy |
| 0: x |
| |
| /'#comment' 0d 0a 00 '^x\' 0a 'y'/x,newline=nul,hex |
| x\nyz |
| 0: x\x0ay |
| |
| /(*NUL)^X\NY/ |
| X\nY |
| 0: X\x0aY |
| X\rY |
| 0: X\x0dY |
| \= Expect no match |
| X\x00Y |
| No match |
| |
| /(?<=abc|)/ |
| abcde\=aftertext |
| 0: |
| 0+ abcde |
| |
| /(?<=|abc)/ |
| abcde\=aftertext |
| 0: |
| 0+ abcde |
| |
| /(?<=abc|)/endanchored |
| abcde\=aftertext |
| 0: |
| 0+ |
| |
| /(?<=|abc)/endanchored |
| abcde\=aftertext |
| 0: |
| 0+ |
| |
| /(*LIMIT_MATCH=100).*(?![|H]?.*(?![|H]?););.*(?![|H]?.*(?![|H]?););\x00\x00\x00\x00\x00\x00\x00(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?![|);)?.*(![|H]?);)?.*(?![|H]?);)?.*(?![|H]?);)?.*(?![|H]););![|H]?););[|H]?);|H]?);)\x00\x00\x00\x00\x00\x00H]?););?![|H]?);)?.*(?![|H]?););[||H]?);)?.*(?![|H]?););[|H]?);(?![|H]?););![|H]?););[|H]?);|H]?);)?.*(?![|H]?););;[\x00\x00\x00\x00\x00\x00\x00![|H]?););![|H]?););[|H]?);|H]?);)?.*(?![|H]?););/no_dotstar_anchor |
| \= Expect limit exceeded |
| .*(?![|H]?.*(?![|H]?););.*(?![|H]?.*(?![|H]?););\x00\x00\x00\x00\x00\x00\x00(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?!(?![|);)?.*(![|H]?);)?.*(?![|H]?);)?.*(?![|H]?);)?.*(?![|H]););![|H]?););[|H]?);|H]?);)\x00\x00\x00\x00\x00\x00H]?););?![|H]?);)?.*(?![|H]?););[||H]?);)?.*(?![|H]?););[|H]?);(?![|H]?););![|H]?););[|H]?);|H]?);)?.*(?![|H]?););;[\x00\x00\x00\x00\x00\x00\x00![|H]?););![|H]?););[|H]?);|H]?);)?.*(?![|H]?);); |
| Failed: error -47: match limit exceeded |
| |
| /\n/firstline |
| xyz\nabc |
| 0: \x0a |
| |
| /\nabc/firstline |
| xyz\nabc |
| 0: \x0aabc |
| |
| /\x{0a}abc/firstline,newline=crlf |
| \= Expect no match |
| xyz\r\nabc |
| No match |
| |
| /[abc]/firstline |
| \= Expect no match |
| \na |
| No match |
| |
| /foobar/ |
| the foobar thing\=copy_matched_subject |
| 0: foobar |
| the foobar thing\=copy_matched_subject,zero_terminate |
| 0: foobar |
| |
| /foobar/g |
| the foobar thing foobar again\=copy_matched_subject |
| 0: foobar |
| 0: foobar |
| |
| /(?(VERSION>=0)^B0W)/ |
| B0W-W0W |
| 0: B0W |
| \= Expect no match |
| 0 |
| No match |
| |
| /(?(VERSION>=1000)^B0W|W0W)/ |
| B0W-W0W |
| 0: W0W |
| \= Expect no match |
| 0 |
| No match |
| |
| /(?<=pqr)abc(?=xyz)/ |
| 123pqrabcxy\=ps,allusedtext |
| Partial match: pqrabcxy |
| <<< |
| 123pqrabcxyz\=ps,allusedtext |
| 0: pqrabcxyz |
| <<< >>> |
| |
| /(?>a+b)/ |
| aaaa\=ps |
| Partial match: aaaa |
| aaaab\=ps |
| 0: aaaab |
| |
| /(abc)(?1)/ |
| abca\=ps |
| Partial match: abca |
| abcabc\=ps |
| 0: abcabc |
| |
| /(?(?=abc).*|Z)/ |
| ab\=ps |
| Partial match: ab |
| abcxyz\=ps |
| 0: abcxyz |
| |
| /(abc)++x/ |
| abcab\=ps |
| Partial match: abcab |
| abc\=ps |
| Partial match: abc |
| ab\=ps |
| Partial match: ab |
| abcx |
| 0: abcx |
| |
| /\z/ |
| abc\=ph |
| Partial match: |
| abc\=ps |
| 0: |
| |
| /\Z/ |
| abc\=ph |
| Partial match: |
| abc\=ps |
| 0: |
| abc\n\=ph |
| Partial match: \x0a |
| abc\n\=ps |
| 0: |
| |
| /c*+(?<=[bc])/ |
| abc\=ph |
| Partial match: c |
| ab\=ph |
| Partial match: |
| abc\=ps |
| 0: c |
| ab\=ps |
| 0: |
| |
| /c++(?<=[bc])/ |
| abc\=ph |
| Partial match: c |
| ab\=ph |
| Partial match: |
| |
| /(?<=(?=.(?<=x)))/ |
| abx |
| 0: |
| ab\=ph |
| Partial match: |
| bxyz |
| 0: |
| xyz |
| 0: |
| |
| /(?![ab]).*/ |
| ab\=ph |
| Partial match: |
| |
| /c*+/ |
| ab\=ph,offset=2 |
| Partial match: |
| |
| # End of testinput6 |