I was über lazy at first, so took libs from SM. But actually it's quite easy to compile, so let's update to latest version \o/.
		
			
				
	
	
		
			7781 lines
		
	
	
		
			117 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			7781 lines
		
	
	
		
			117 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| /-- This set of tests check the DFA matching functionality of pcre_dfa_exec(),
 | ||
|     excluding UTF and Unicode property support. The -dfa flag must be used with
 | ||
|     pcretest when running it. --/
 | ||
|     
 | ||
| < forbid 8W 
 | ||
|      
 | ||
| /abc/
 | ||
|     abc
 | ||
|  0: abc
 | ||
|     
 | ||
| /ab*c/
 | ||
|     abc
 | ||
|  0: abc
 | ||
|     abbbbc
 | ||
|  0: abbbbc
 | ||
|     ac
 | ||
|  0: ac
 | ||
|     
 | ||
| /ab+c/
 | ||
|     abc
 | ||
|  0: abc
 | ||
|     abbbbbbc
 | ||
|  0: abbbbbbc
 | ||
|     *** Failers 
 | ||
| No match
 | ||
|     ac
 | ||
| No match
 | ||
|     ab
 | ||
| No match
 | ||
|     
 | ||
| /a*/O
 | ||
|     a
 | ||
|  0: a
 | ||
|  1: 
 | ||
|     aaaaaaaaaaaaaaaaa
 | ||
|  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
 | ||
| 15: aa
 | ||
| 16: a
 | ||
| 17: 
 | ||
|     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
 | ||
| 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
 | ||
| 10: aaaaaaaaaaaaaaaaaaaa
 | ||
| 11: aaaaaaaaaaaaaaaaaaa
 | ||
| 12: aaaaaaaaaaaaaaaaaa
 | ||
| 13: aaaaaaaaaaaaaaaaa
 | ||
| 14: aaaaaaaaaaaaaaaa
 | ||
| 15: aaaaaaaaaaaaaaa
 | ||
| 16: aaaaaaaaaaaaaa
 | ||
| 17: aaaaaaaaaaaaa
 | ||
| 18: aaaaaaaaaaaa
 | ||
| 19: aaaaaaaaaaa
 | ||
| 20: aaaaaaaaaa
 | ||
| 21: aaaaaaaaa
 | ||
|     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\F 
 | ||
|  0: 
 | ||
|     
 | ||
| /(a|abcd|african)/
 | ||
|     a
 | ||
|  0: a
 | ||
|     abcd
 | ||
|  0: abcd
 | ||
|  1: a
 | ||
|     african
 | ||
|  0: african
 | ||
|  1: a
 | ||
|     
 | ||
| /^abc/
 | ||
|     abcdef
 | ||
|  0: abc
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     xyzabc
 | ||
| No match
 | ||
|     xyz\nabc    
 | ||
| No match
 | ||
|     
 | ||
| /^abc/m
 | ||
|     abcdef
 | ||
|  0: abc
 | ||
|     xyz\nabc    
 | ||
|  0: abc
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     xyzabc
 | ||
| No match
 | ||
|     
 | ||
| /\Aabc/
 | ||
|     abcdef
 | ||
|  0: abc
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     xyzabc
 | ||
| No match
 | ||
|     xyz\nabc    
 | ||
| No match
 | ||
|     
 | ||
| /\Aabc/m
 | ||
|     abcdef
 | ||
|  0: abc
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     xyzabc
 | ||
| No match
 | ||
|     xyz\nabc    
 | ||
| No match
 | ||
|     
 | ||
| /\Gabc/
 | ||
|     abcdef
 | ||
|  0: abc
 | ||
|     xyzabc\>3
 | ||
|  0: abc
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     xyzabc    
 | ||
| No match
 | ||
|     xyzabc\>2 
 | ||
| No match
 | ||
|     
 | ||
| /x\dy\Dz/
 | ||
|     x9yzz
 | ||
|  0: x9yzz
 | ||
|     x0y+z
 | ||
|  0: x0y+z
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     xyz
 | ||
| No match
 | ||
|     xxy0z     
 | ||
| No match
 | ||
|     
 | ||
| /x\sy\Sz/
 | ||
|     x yzz
 | ||
|  0: x yzz
 | ||
|     x y+z
 | ||
|  0: x y+z
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     xyz
 | ||
| No match
 | ||
|     xxyyz
 | ||
| No match
 | ||
|     
 | ||
| /x\wy\Wz/
 | ||
|     xxy+z
 | ||
|  0: xxy+z
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     xxy0z
 | ||
| No match
 | ||
|     x+y+z         
 | ||
| No match
 | ||
|     
 | ||
| /x.y/
 | ||
|     x+y
 | ||
|  0: x+y
 | ||
|     x-y
 | ||
|  0: x-y
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers 
 | ||
| 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
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     ba0\n
 | ||
| No match
 | ||
|     ba0\ncd   
 | ||
| No match
 | ||
| 
 | ||
| /a\d\z/m
 | ||
|     ba0
 | ||
|  0: a0
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     ba0\n
 | ||
| No match
 | ||
|     ba0\ncd   
 | ||
| No match
 | ||
| 
 | ||
| /a\d\Z/
 | ||
|     ba0
 | ||
|  0: a0
 | ||
|     ba0\n
 | ||
|  0: a0
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     ba0\ncd   
 | ||
| No match
 | ||
| 
 | ||
| /a\d\Z/m
 | ||
|     ba0
 | ||
|  0: a0
 | ||
|     ba0\n
 | ||
|  0: a0
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     ba0\ncd   
 | ||
| No match
 | ||
| 
 | ||
| /a\d$/
 | ||
|     ba0
 | ||
|  0: a0
 | ||
|     ba0\n
 | ||
|  0: a0
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     ba0\ncd   
 | ||
| No match
 | ||
| 
 | ||
| /a\d$/m
 | ||
|     ba0
 | ||
|  0: a0
 | ||
|     ba0\n
 | ||
|  0: a0
 | ||
|     ba0\ncd   
 | ||
|  0: a0
 | ||
|     *** Failers
 | ||
| No match
 | ||
| 
 | ||
| /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
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     ax
 | ||
| No match
 | ||
|     axx     
 | ||
| No match
 | ||
|       
 | ||
| /x{3}yz/
 | ||
|     axxxyzq
 | ||
|  0: xxxyz
 | ||
|     axxxxyzq
 | ||
|  0: xxxyz
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     ax
 | ||
| No match
 | ||
|     axx     
 | ||
| No match
 | ||
|     ayzq
 | ||
| No match
 | ||
|     axyzq
 | ||
| No match
 | ||
|       
 | ||
| /[^a]+/O
 | ||
|     bac
 | ||
|  0: b
 | ||
|     bcdefax
 | ||
|  0: bcdef
 | ||
|  1: bcde
 | ||
|  2: bcd
 | ||
|  3: bc
 | ||
|  4: b
 | ||
|     *** Failers
 | ||
|  0: *** F
 | ||
|  1: *** 
 | ||
|  2: ***
 | ||
|  3: **
 | ||
|  4: *
 | ||
|     aaaaa   
 | ||
| No match
 | ||
| 
 | ||
| /[^a]*/O
 | ||
|     bac
 | ||
|  0: b
 | ||
|  1: 
 | ||
|     bcdefax
 | ||
|  0: bcdef
 | ||
|  1: bcde
 | ||
|  2: bcd
 | ||
|  3: bc
 | ||
|  4: b
 | ||
|  5: 
 | ||
|     *** Failers
 | ||
|  0: *** F
 | ||
|  1: *** 
 | ||
|  2: ***
 | ||
|  3: **
 | ||
|  4: *
 | ||
|  5: 
 | ||
|     aaaaa   
 | ||
|  0: 
 | ||
|     
 | ||
| /[^a]{3,5}/O
 | ||
|     xyz
 | ||
|  0: xyz
 | ||
|     awxyza
 | ||
|  0: wxyz
 | ||
|  1: wxy
 | ||
|     abcdefa
 | ||
|  0: bcdef
 | ||
|  1: bcde
 | ||
|  2: bcd
 | ||
|     abcdefghijk
 | ||
|  0: bcdef
 | ||
|  1: bcde
 | ||
|  2: bcd
 | ||
|     *** Failers
 | ||
|  0: *** F
 | ||
|  1: *** 
 | ||
|  2: ***
 | ||
|     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
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     xyz
 | ||
| No match
 | ||
|     
 | ||
| /\D+/
 | ||
|     ab123c56
 | ||
|  0: ab
 | ||
|     *** Failers
 | ||
|  0: *** Failers
 | ||
|     789
 | ||
| No match
 | ||
|     
 | ||
| /\d?A/
 | ||
|     045ABC
 | ||
|  0: 5A
 | ||
|     ABC
 | ||
|  0: A
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     XYZ
 | ||
| No match
 | ||
|     
 | ||
| /\D?A/
 | ||
|     ABC
 | ||
|  0: A
 | ||
|     BAC
 | ||
|  0: BA
 | ||
|     9ABC             
 | ||
|  0: A
 | ||
|     *** Failers
 | ||
| No match
 | ||
| 
 | ||
| /a+/
 | ||
|     aaaa
 | ||
|  0: aaaa
 | ||
| 
 | ||
| /^.*xyz/
 | ||
|     xyz
 | ||
|  0: xyz
 | ||
|     ggggggggxyz
 | ||
|  0: ggggggggxyz
 | ||
|     
 | ||
| /^.+xyz/
 | ||
|     abcdxyz
 | ||
|  0: abcdxyz
 | ||
|     axyz
 | ||
|  0: axyz
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     xyz
 | ||
| No match
 | ||
|     
 | ||
| /^.?xyz/
 | ||
|     xyz
 | ||
|  0: xyz
 | ||
|     cxyz       
 | ||
|  0: cxyz
 | ||
| 
 | ||
| /^\d{2,3}X/
 | ||
|     12X
 | ||
|  0: 12X
 | ||
|     123X
 | ||
|  0: 123X
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     abcd1234
 | ||
| No match
 | ||
|     e45
 | ||
| No match
 | ||
| 
 | ||
| /^[abcd]{2,3}\d/
 | ||
|     ab45
 | ||
|  0: ab4
 | ||
|     bcd93
 | ||
|  0: bcd9
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| No match
 | ||
| 
 | ||
| /^(abc)+\d/
 | ||
|     abc45
 | ||
|  0: abc4
 | ||
|     abcabcabc45
 | ||
|  0: abcabcabc4
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     42xyz 
 | ||
| No match
 | ||
| 
 | ||
| /^(abc)?\d/
 | ||
|     abc45
 | ||
|  0: abc4
 | ||
|     42xyz 
 | ||
|  0: 4
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     abcabcabc45
 | ||
| No match
 | ||
| 
 | ||
| /^(abc){2,3}\d/
 | ||
|     abcabc45
 | ||
|  0: abcabc4
 | ||
|     abcabcabc45
 | ||
|  0: abcabcabc4
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers)
 | ||
| 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
 | ||
|     *** Failers 
 | ||
| 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: <>
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     <abc
 | ||
| No match
 | ||
| 
 | ||
| /^(?(?=abc)\w{3}:|\d\d)$/        
 | ||
|     abc:                          
 | ||
|  0: abc:
 | ||
|     12                             
 | ||
|  0: 12
 | ||
|     *** Failers                     
 | ||
| No match
 | ||
|     123                       
 | ||
| No match
 | ||
|     xyz                        
 | ||
| No match
 | ||
|                                 
 | ||
| /^(?(?!abc)\d\d|\w{3}:)$/      
 | ||
|     abc:                        
 | ||
|  0: abc:
 | ||
|     12         
 | ||
|  0: 12
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     123
 | ||
| No match
 | ||
|     xyz    
 | ||
| No match
 | ||
| 
 | ||
| /^(?=abc)\w{5}:$/        
 | ||
|     abcde:                          
 | ||
|  0: abcde:
 | ||
|     *** Failers                     
 | ||
| No match
 | ||
|     abc.. 
 | ||
| No match
 | ||
|     123                       
 | ||
| No match
 | ||
|     vwxyz                        
 | ||
| No match
 | ||
|                                 
 | ||
| /^(?!abc)\d\d$/      
 | ||
|     12         
 | ||
|  0: 12
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     abcde:
 | ||
| No match
 | ||
|     abc..  
 | ||
| No match
 | ||
|     123
 | ||
| No match
 | ||
|     vwxyz    
 | ||
| No match
 | ||
| 
 | ||
| /(?<=abc|xy)123/
 | ||
|     abc12345
 | ||
|  0: 123
 | ||
|     wxy123z
 | ||
|  0: 123
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     123abc
 | ||
| No match
 | ||
| 
 | ||
| /(?<!abc|xy)123/
 | ||
|     123abc
 | ||
|  0: 123
 | ||
|     mno123456 
 | ||
|  0: 123
 | ||
|     *** Failers
 | ||
| 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}/C
 | ||
|   ababab
 | ||
| --->ababab
 | ||
|  +0 ^          (ab|cd){3,4}
 | ||
|  +1 ^          a
 | ||
|  +4 ^          c
 | ||
|  +2 ^^         b
 | ||
|  +3 ^ ^        |
 | ||
|  +1 ^ ^        a
 | ||
|  +4 ^ ^        c
 | ||
|  +2 ^  ^       b
 | ||
|  +3 ^   ^      |
 | ||
|  +1 ^   ^      a
 | ||
|  +4 ^   ^      c
 | ||
|  +2 ^    ^     b
 | ||
|  +3 ^     ^    |
 | ||
| +12 ^     ^    
 | ||
|  +1 ^     ^    a
 | ||
|  +4 ^     ^    c
 | ||
|  0: ababab
 | ||
|   abcdabcd
 | ||
| --->abcdabcd
 | ||
|  +0 ^            (ab|cd){3,4}
 | ||
|  +1 ^            a
 | ||
|  +4 ^            c
 | ||
|  +2 ^^           b
 | ||
|  +3 ^ ^          |
 | ||
|  +1 ^ ^          a
 | ||
|  +4 ^ ^          c
 | ||
|  +5 ^  ^         d
 | ||
|  +6 ^   ^        )
 | ||
|  +1 ^   ^        a
 | ||
|  +4 ^   ^        c
 | ||
|  +2 ^    ^       b
 | ||
|  +3 ^     ^      |
 | ||
| +12 ^     ^      
 | ||
|  +1 ^     ^      a
 | ||
|  +4 ^     ^      c
 | ||
|  +5 ^      ^     d
 | ||
|  +6 ^       ^    )
 | ||
| +12 ^       ^    
 | ||
|  0: abcdabcd
 | ||
|  1: abcdab
 | ||
|   abcdcdcdcdcd  
 | ||
| --->abcdcdcdcdcd
 | ||
|  +0 ^                (ab|cd){3,4}
 | ||
|  +1 ^                a
 | ||
|  +4 ^                c
 | ||
|  +2 ^^               b
 | ||
|  +3 ^ ^              |
 | ||
|  +1 ^ ^              a
 | ||
|  +4 ^ ^              c
 | ||
|  +5 ^  ^             d
 | ||
|  +6 ^   ^            )
 | ||
|  +1 ^   ^            a
 | ||
|  +4 ^   ^            c
 | ||
|  +5 ^    ^           d
 | ||
|  +6 ^     ^          )
 | ||
| +12 ^     ^          
 | ||
|  +1 ^     ^          a
 | ||
|  +4 ^     ^          c
 | ||
|  +5 ^      ^         d
 | ||
|  +6 ^       ^        )
 | ||
| +12 ^       ^        
 | ||
|  0: abcdcdcd
 | ||
|  1: abcdcd
 | ||
| 
 | ||
| /^abc/
 | ||
|     abcdef
 | ||
|  0: abc
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     abcdef\B  
 | ||
| No match
 | ||
| 
 | ||
| /^(a*|xyz)/
 | ||
|     bcd
 | ||
|  0: 
 | ||
|     aaabcd
 | ||
|  0: aaa
 | ||
|     xyz
 | ||
|  0: xyz
 | ||
|  1: 
 | ||
|     xyz\N  
 | ||
|  0: xyz
 | ||
|     *** Failers
 | ||
|  0: 
 | ||
|     bcd\N   
 | ||
| No match
 | ||
|     
 | ||
| /xyz$/
 | ||
|     xyz
 | ||
|  0: xyz
 | ||
|     xyz\n
 | ||
|  0: xyz
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     xyz\Z
 | ||
| No match
 | ||
|     xyz\n\Z    
 | ||
| No match
 | ||
|     
 | ||
| /xyz$/m
 | ||
|     xyz
 | ||
|  0: xyz
 | ||
|     xyz\n 
 | ||
|  0: xyz
 | ||
|     abcxyz\npqr 
 | ||
|  0: xyz
 | ||
|     abcxyz\npqr\Z 
 | ||
|  0: xyz
 | ||
|     xyz\n\Z    
 | ||
|  0: xyz
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     xyz\Z
 | ||
| No match
 | ||
| 
 | ||
| /\Gabc/
 | ||
|     abcdef
 | ||
|  0: abc
 | ||
|     defabcxyz\>3 
 | ||
|  0: abc
 | ||
|     *** Failers 
 | ||
| No match
 | ||
|     defabcxyz
 | ||
| No match
 | ||
| 
 | ||
| /^abcdef/
 | ||
|     ab\P
 | ||
| Partial match: ab
 | ||
|     abcde\P
 | ||
| Partial match: abcde
 | ||
|     abcdef\P
 | ||
|  0: abcdef
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     abx\P    
 | ||
| No match
 | ||
| 
 | ||
| /^a{2,4}\d+z/
 | ||
|     a\P
 | ||
| Partial match: a
 | ||
|     aa\P
 | ||
| Partial match: aa
 | ||
|     aa2\P 
 | ||
| Partial match: aa2
 | ||
|     aaa\P
 | ||
| Partial match: aaa
 | ||
|     aaa23\P 
 | ||
| Partial match: aaa23
 | ||
|     aaaa12345\P
 | ||
| Partial match: aaaa12345
 | ||
|     aa0z\P
 | ||
|  0: aa0z
 | ||
|     aaaa4444444444444z\P 
 | ||
|  0: aaaa4444444444444z
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     az\P 
 | ||
| No match
 | ||
|     aaaaa\P 
 | ||
| No match
 | ||
|     a56\P 
 | ||
| No match
 | ||
| 
 | ||
| /^abcdef/
 | ||
|    abc\P
 | ||
| Partial match: abc
 | ||
|    def\R 
 | ||
|  0: def
 | ||
|    
 | ||
| /(?<=foo)bar/
 | ||
|    xyzfo\P 
 | ||
| No match
 | ||
|    foob\P\>2 
 | ||
| Partial match at offset 3: foob
 | ||
|    foobar...\R\P\>4 
 | ||
|  0: ar
 | ||
|    xyzfo\P
 | ||
| No match
 | ||
|    foobar\>2  
 | ||
|  0: bar
 | ||
|    *** Failers
 | ||
| No match
 | ||
|    xyzfo\P
 | ||
| No match
 | ||
|    obar\R   
 | ||
| No match
 | ||
| 
 | ||
| /(ab*(cd|ef))+X/
 | ||
|     adfadadaklhlkalkajhlkjahdfasdfasdfladsfjkj\P\Z
 | ||
| No match
 | ||
|     lkjhlkjhlkjhlkjhabbbbbbcdaefabbbbbbbefa\P\B\Z
 | ||
| Partial match: abbbbbbcdaefabbbbbbbefa
 | ||
|     cdabbbbbbbb\P\R\B\Z
 | ||
| Partial match: cdabbbbbbbb
 | ||
|     efabbbbbbbbbbbbbbbb\P\R\B\Z
 | ||
| Partial match: efabbbbbbbbbbbbbbbb
 | ||
|     bbbbbbbbbbbbcdXyasdfadf\P\R\B\Z    
 | ||
|  0: bbbbbbbbbbbbcdX
 | ||
| 
 | ||
| /(a|b)/SF>testsavedregex
 | ||
| Compiled pattern written to testsavedregex
 | ||
| Study data written to testsavedregex
 | ||
| <testsavedregex
 | ||
| Compiled pattern (byte-inverted) loaded from testsavedregex
 | ||
| Study data loaded from testsavedregex
 | ||
|     abc
 | ||
|  0: a
 | ||
|     ** Failers
 | ||
|  0: a
 | ||
|     def  
 | ||
| No match
 | ||
|     
 | ||
| /the quick brown fox/
 | ||
|     the quick brown fox
 | ||
|  0: the quick brown fox
 | ||
|     The quick brown FOX
 | ||
| No match
 | ||
|     What do you know about the quick brown fox?
 | ||
|  0: the quick brown fox
 | ||
|     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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     bababbc
 | ||
| No match
 | ||
|     babababc
 | ||
| No match
 | ||
| 
 | ||
| /^(ba|b*){1,2}?bc/
 | ||
|     babc
 | ||
|  0: babc
 | ||
|     bbabc
 | ||
|  0: bbabc
 | ||
|     bababc
 | ||
|  0: bababc
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     fthing
 | ||
| No match
 | ||
|     [thing
 | ||
| No match
 | ||
|     \\thing
 | ||
| No match
 | ||
| 
 | ||
| /^[]cde]/
 | ||
|     ]thing
 | ||
|  0: ]
 | ||
|     cthing
 | ||
|  0: c
 | ||
|     dthing
 | ||
|  0: d
 | ||
|     ething
 | ||
|  0: e
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     athing
 | ||
| No match
 | ||
|     fthing
 | ||
| No match
 | ||
| 
 | ||
| /^[^ab\]cde]/
 | ||
|     fthing
 | ||
|  0: f
 | ||
|     [thing
 | ||
|  0: [
 | ||
|     \\thing
 | ||
|  0: \
 | ||
|     *** Failers
 | ||
|  0: *
 | ||
|     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
 | ||
|     *** Failers
 | ||
|  0: *
 | ||
|     ]thing
 | ||
| No match
 | ||
|     cthing
 | ||
| No match
 | ||
|     dthing
 | ||
| No match
 | ||
|     ething
 | ||
| No match
 | ||
| 
 | ||
| /^\<5C>/
 | ||
|     <20>
 | ||
|  0: \x81
 | ||
| 
 | ||
| /^<5E>/
 | ||
|     <20>
 | ||
|  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
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     abc
 | ||
| No match
 | ||
| 
 | ||
| /^.*nter/
 | ||
|     enter
 | ||
|  0: enter
 | ||
|     inter
 | ||
|  0: inter
 | ||
|     uponter
 | ||
|  0: uponter
 | ||
| 
 | ||
| /^xxx[0-9]+$/
 | ||
|     xxx0
 | ||
|  0: xxx0
 | ||
|     xxx1234
 | ||
|  0: xxx1234
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     xxx
 | ||
| No match
 | ||
| 
 | ||
| /^.+[0-9][0-9][0-9]$/
 | ||
|     x123
 | ||
|  0: x123
 | ||
|     xx123
 | ||
|  0: xx123
 | ||
|     123456
 | ||
|  0: 123456
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     123
 | ||
| No match
 | ||
|     x1234
 | ||
|  0: x1234
 | ||
| 
 | ||
| /^.+?[0-9][0-9][0-9]$/
 | ||
|     x123
 | ||
|  0: x123
 | ||
|     xx123
 | ||
|  0: xx123
 | ||
|     123456
 | ||
|  0: 123456
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     123
 | ||
| No match
 | ||
|     x1234
 | ||
|  0: x1234
 | ||
| 
 | ||
| /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
 | ||
|     abc!pqr=apquxz.ixr.zzz.ac.uk
 | ||
|  0: abc!pqr=apquxz.ixr.zzz.ac.uk
 | ||
|     *** Failers
 | ||
| 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: :
 | ||
|     *** Fail if we don't
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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   (
 | ||
|     *** Failers
 | ||
| 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-.
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     \"1234\" : things
 | ||
| No match
 | ||
| 
 | ||
| /^$/
 | ||
|     \
 | ||
|  0: 
 | ||
|     *** Failers
 | ||
| No match
 | ||
| 
 | ||
| /   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/x
 | ||
|     ab c
 | ||
|  0: ab c
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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__
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     1234567
 | ||
| No match
 | ||
| 
 | ||
| /^[aeiou\d]{4,5}$/
 | ||
|     uoie
 | ||
|  0: uoie
 | ||
|     1234
 | ||
|  0: 1234
 | ||
|     12345
 | ||
|  0: 12345
 | ||
|     aaaaa
 | ||
|  0: aaaaa
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     abc
 | ||
| No match
 | ||
| 
 | ||
| /(?=^)abc/
 | ||
|     abc
 | ||
|  0: abc
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     the abc
 | ||
| No match
 | ||
| 
 | ||
| /^[ab]{1,3}(ab*|b)/O
 | ||
|     aabbbbb
 | ||
|  0: aabbbbb
 | ||
|  1: aabbbb
 | ||
|  2: aabbb
 | ||
|  3: aabb
 | ||
|  4: aab
 | ||
|  5: aa
 | ||
| 
 | ||
| /^[ab]{1,3}?(ab*|b)/O
 | ||
|     aabbbbb
 | ||
|  0: aabbbbb
 | ||
|  1: aabbbb
 | ||
|  2: aabbb
 | ||
|  3: aabb
 | ||
|  4: aab
 | ||
|  5: aa
 | ||
| 
 | ||
| /^[ab]{1,3}?(ab*?|b)/O
 | ||
|     aabbbbb
 | ||
|  0: aabbbbb
 | ||
|  1: aabbbb
 | ||
|  2: aabbb
 | ||
|  3: aabb
 | ||
|  4: aab
 | ||
|  5: aa
 | ||
| 
 | ||
| /^[ab]{1,3}(ab*?|b)/O
 | ||
|     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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
|  0: *** Failers
 | ||
|     abc\ndef
 | ||
| No match
 | ||
| 
 | ||
| /(?:b)|(?::+)/
 | ||
|     b::c
 | ||
|  0: b
 | ||
|     c::b
 | ||
|  0: ::
 | ||
| 
 | ||
| /[-az]+/
 | ||
|     az-
 | ||
|  0: az-
 | ||
|     *** Failers
 | ||
|  0: a
 | ||
|     b
 | ||
| No match
 | ||
| 
 | ||
| /[az-]+/
 | ||
|     za-
 | ||
|  0: za-
 | ||
|     *** Failers
 | ||
|  0: a
 | ||
|     b
 | ||
| No match
 | ||
| 
 | ||
| /[a\-z]+/
 | ||
|     a-z
 | ||
|  0: a-z
 | ||
|     *** Failers
 | ||
|  0: a
 | ||
|     b
 | ||
| No match
 | ||
| 
 | ||
| /[a-z]+/
 | ||
|     abcdxyz
 | ||
|  0: abcdxyz
 | ||
| 
 | ||
| /[\d-]+/
 | ||
|     12-34
 | ||
|  0: 12-34
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     aaa
 | ||
| No match
 | ||
| 
 | ||
| /[\d-z]+/
 | ||
|     12-34z
 | ||
|  0: 12-34z
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     aaa
 | ||
| No match
 | ||
| 
 | ||
| /\x5c/
 | ||
|     \\
 | ||
|  0: \
 | ||
| 
 | ||
| /\x20Z/
 | ||
|     the Zoo
 | ||
|  0:  Z
 | ||
|     *** Failers
 | ||
| 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/<lf>
 | ||
|     a\rb
 | ||
|  0: a\x0db
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     a\nb
 | ||
| No match
 | ||
| 
 | ||
| /abc$/
 | ||
|     abc
 | ||
|  0: abc
 | ||
|     abc\n
 | ||
|  0: abc
 | ||
|     *** Failers
 | ||
| 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\8B\9C$/
 | ||
|     A8B9C
 | ||
|  0: A8B9C
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     A\08B\09C  
 | ||
| No match
 | ||
|     
 | ||
| /^[A\8B\9C]+$/
 | ||
|     A8B9C
 | ||
|  0: A8B9C
 | ||
|     *** Failers 
 | ||
| No match
 | ||
|     A8B9C\x00
 | ||
| No match
 | ||
|     
 | ||
| /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
 | ||
|     abcdefghijk\12S
 | ||
|  0: abcdefghijk\x0aS
 | ||
| 
 | ||
| /ab\idef/
 | ||
|     abidef
 | ||
|  0: abidef
 | ||
| 
 | ||
| /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
 | ||
|     *** Failers
 | ||
|  0: *** Failers
 | ||
|  1: *** Failer
 | ||
|  2: *** Faile
 | ||
|  3: *** Fail
 | ||
|  4: *** Fai
 | ||
|  5: *** Fa
 | ||
|     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
 | ||
|     *** Failers
 | ||
|  0: s
 | ||
|     abk   
 | ||
| No match
 | ||
|    
 | ||
| /[^k]{2,3}$/
 | ||
|     abc
 | ||
|  0: abc
 | ||
|     kbc
 | ||
|  0: bc
 | ||
|     kabc 
 | ||
|  0: abc
 | ||
|     *** Failers
 | ||
|  0: ers
 | ||
|     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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers 
 | ||
| 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*)/O
 | ||
|     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 
 | ||
| 15: I have 2
 | ||
| 16: I have 
 | ||
| 17: I have
 | ||
| 18: I hav
 | ||
| 19: I ha
 | ||
| 20: I h
 | ||
| 21: I 
 | ||
|     
 | ||
| /(.*)(\d+)/
 | ||
|     I have 2 numbers: 53147
 | ||
|  0: I have 2 numbers: 53147
 | ||
|  1: I have 2
 | ||
|  
 | ||
| /(.*?)(\d*)/O
 | ||
|     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 
 | ||
| 15: I have 2
 | ||
| 16: I have 
 | ||
| 17: I have
 | ||
| 18: I hav
 | ||
| 19: I ha
 | ||
| 20: I h
 | ||
| 21: I 
 | ||
| 
 | ||
| /(.*?)(\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
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     ABC123
 | ||
| No match
 | ||
|     
 | ||
| /^[W-]46]/
 | ||
|     W46]789 
 | ||
|  0: W46]
 | ||
|     -46]789
 | ||
|  0: -46]
 | ||
|     *** Failers
 | ||
| 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: \
 | ||
|     *** Failers
 | ||
| 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
 | ||
|   word cat dog elephant mussel cow horse canary baboon snake shark
 | ||
| No match
 | ||
| 
 | ||
| /word (?:[a-zA-Z0-9]+ ){0,300}otherword/
 | ||
|   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}/
 | ||
|     bcd
 | ||
| No match
 | ||
|     abc
 | ||
|  0: a
 | ||
|     aab  
 | ||
|  0: a
 | ||
| 
 | ||
| /^(a){1,2}/
 | ||
|     bcd
 | ||
| No match
 | ||
|     abc
 | ||
|  0: a
 | ||
|     aab  
 | ||
|  0: aa
 | ||
|  1: a
 | ||
| 
 | ||
| /^(a){1,3}/
 | ||
|     bcd
 | ||
| No match
 | ||
|     abc
 | ||
|  0: a
 | ||
|     aab
 | ||
|  0: aa
 | ||
|  1: a
 | ||
|     aaa   
 | ||
|  0: aaa
 | ||
|  1: aa
 | ||
|  2: a
 | ||
| 
 | ||
| /^(a){1,}/
 | ||
|     bcd
 | ||
| No match
 | ||
|     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
 | ||
| 
 | ||
| /.*\.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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers 
 | ||
| No match
 | ||
|     abcde\nBar  
 | ||
| No match
 | ||
| 
 | ||
| /(?s:.*X|^B)/
 | ||
|     abcde\n1234Xyz
 | ||
|  0: abcde\x0a1234X
 | ||
|     BarFoo 
 | ||
|  0: B
 | ||
|     *** Failers 
 | ||
| No match
 | ||
|     abcde\nBar  
 | ||
| No match
 | ||
| 
 | ||
| /^.*B/
 | ||
|     **** Failers
 | ||
| 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
 | ||
|     *** Failers 
 | ||
| No match
 | ||
|     z 
 | ||
| No match
 | ||
| 
 | ||
| /abcde{0,0}/
 | ||
|     abcd
 | ||
|  0: abcd
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     abce  
 | ||
| No match
 | ||
| 
 | ||
| /ab[cd]{0,0}e/
 | ||
|     abe
 | ||
|  0: abe
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     abcde 
 | ||
| No match
 | ||
|     
 | ||
| /ab(c){0,0}d/
 | ||
|     abd
 | ||
|  0: abd
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     abcd   
 | ||
| No match
 | ||
| 
 | ||
| /a(b*)/
 | ||
|     a
 | ||
|  0: a
 | ||
|     ab
 | ||
|  0: ab
 | ||
|     abbbb
 | ||
|  0: abbbb
 | ||
|     *** Failers
 | ||
|  0: a
 | ||
|     bbbbb    
 | ||
| No match
 | ||
|     
 | ||
| /ab\d{0}e/
 | ||
|     abe
 | ||
|  0: abe
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     ab1e   
 | ||
| No match
 | ||
|     
 | ||
| /"([^\\"]+|\\.)*"/
 | ||
|     the \"quick\" brown fox
 | ||
|  0: "quick"
 | ||
|     \"the \\\"quick\\\" brown fox\" 
 | ||
|  0: "the \"quick\" brown fox"
 | ||
| 
 | ||
| /.*?/g+
 | ||
|     abc
 | ||
|  0: abc
 | ||
|  0+ 
 | ||
|  1: ab
 | ||
|  2: a
 | ||
|  3: 
 | ||
|  0: 
 | ||
|  0+ 
 | ||
|   
 | ||
| /\b/g+
 | ||
|     abc 
 | ||
|  0: 
 | ||
|  0+ abc
 | ||
|  0: 
 | ||
|  0+ 
 | ||
| 
 | ||
| /\b/+g
 | ||
|     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
 | ||
|     *** Failers 
 | ||
| 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
 | ||
|     x\nb\n
 | ||
| No match
 | ||
|     a\bx\n  
 | ||
|  0: x
 | ||
|     
 | ||
| /\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
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     barfoo
 | ||
| No match
 | ||
|     towbarfoo
 | ||
| No match
 | ||
| 
 | ||
| /\w{3}(?<!bar)foo/
 | ||
|     catfood
 | ||
|  0: catfoo
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     foo
 | ||
| No match
 | ||
|     barfoo
 | ||
| No match
 | ||
|     towbarfoo
 | ||
| No match
 | ||
| 
 | ||
| /(?<=(foo)a)bar/
 | ||
|     fooabar
 | ||
|  0: bar
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     bar
 | ||
| No match
 | ||
|     foobbar
 | ||
| No match
 | ||
|       
 | ||
| /\Aabc\z/m
 | ||
|     abc
 | ||
|  0: abc
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     abc\n   
 | ||
| No match
 | ||
|     qqq\nabc
 | ||
| No match
 | ||
|     abc\nzzz
 | ||
| No match
 | ||
|     qqq\nabc\nzzz
 | ||
| No match
 | ||
| 
 | ||
| "(?>.*/)foo"
 | ||
|     /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
 | ||
|     *** Failers 
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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)
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa   
 | ||
| No match
 | ||
| 
 | ||
| /a(?-i)b/i
 | ||
|     ab
 | ||
|  0: ab
 | ||
|     Ab
 | ||
|  0: Ab
 | ||
|     *** Failers 
 | ||
| No match
 | ||
|     aB
 | ||
| No match
 | ||
|     AB
 | ||
| No match
 | ||
|         
 | ||
| /(a (?x)b c)d e/
 | ||
|     a bcd e
 | ||
|  0: a bcd e
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     abcdef  
 | ||
| No match
 | ||
| 
 | ||
| /(a(?i)b)c/
 | ||
|     abc
 | ||
|  0: abc
 | ||
|     aBc
 | ||
|  0: aBc
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers 
 | ||
| No match
 | ||
|     ABC
 | ||
| No match
 | ||
|     abC
 | ||
| No match
 | ||
|     aBC
 | ||
| No match
 | ||
|     
 | ||
| /a(?i:b)*c/
 | ||
|     aBc
 | ||
|  0: aBc
 | ||
|     aBBc
 | ||
|  0: aBBc
 | ||
|     *** Failers 
 | ||
| No match
 | ||
|     aBC
 | ||
| No match
 | ||
|     aBBC
 | ||
| No match
 | ||
|     
 | ||
| /a(?=b(?i)c)\w\wd/
 | ||
|     abcd
 | ||
|  0: abcd
 | ||
|     abCd
 | ||
|  0: abCd
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     Abc
 | ||
| No match
 | ||
|     abAb    
 | ||
| No match
 | ||
|     abbC 
 | ||
| No match
 | ||
|     
 | ||
| /(?=a(?i)b)\w\wc/
 | ||
|     abc
 | ||
|  0: abc
 | ||
|     aBc
 | ||
|  0: aBc
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     Ab 
 | ||
| No match
 | ||
|     abC
 | ||
| No match
 | ||
|     aBC     
 | ||
| No match
 | ||
|     
 | ||
| /(?<=a(?i)b)(\w\w)c/
 | ||
|     abxxc
 | ||
|  0: xxc
 | ||
|     aBxxc
 | ||
|  0: xxc
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     Abxxc
 | ||
| No match
 | ||
|     ABxxc
 | ||
| No match
 | ||
|     abxxC      
 | ||
| No match
 | ||
| 
 | ||
| /^(?(?=abc)\w{3}:|\d\d)$/
 | ||
|     abc:
 | ||
|  0: abc:
 | ||
|     12
 | ||
|  0: 12
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     123
 | ||
| No match
 | ||
|     xyz    
 | ||
| No match
 | ||
| 
 | ||
| /^(?(?!abc)\d\d|\w{3}:)$/
 | ||
|     abc:
 | ||
|  0: abc:
 | ||
|     12
 | ||
|  0: 12
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     123
 | ||
| No match
 | ||
|     xyz    
 | ||
| No match
 | ||
|     
 | ||
| /(?(?<=foo)bar|cat)/
 | ||
|     foobar
 | ||
|  0: bar
 | ||
|     cat
 | ||
|  0: cat
 | ||
|     fcat
 | ||
|  0: cat
 | ||
|     focat   
 | ||
|  0: cat
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     foocat  
 | ||
| No match
 | ||
| 
 | ||
| /(?(?<!foo)cat|bar)/
 | ||
|     foobar
 | ||
|  0: bar
 | ||
|     cat
 | ||
|  0: cat
 | ||
|     fcat
 | ||
|  0: cat
 | ||
|     focat   
 | ||
|  0: cat
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     aCD  
 | ||
| No match
 | ||
|     XY  
 | ||
| No match
 | ||
| 
 | ||
| /(?<=foo\n)^bar/m
 | ||
|     foo\nbar
 | ||
|  0: bar
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     bar
 | ||
| No match
 | ||
|     baz\nbar   
 | ||
| No match
 | ||
| 
 | ||
| /(?<=(?<!foo)bar)baz/
 | ||
|     barbaz
 | ||
|  0: baz
 | ||
|     barbarbaz 
 | ||
|  0: baz
 | ||
|     koobarbaz 
 | ||
|  0: baz
 | ||
|     *** Failers
 | ||
| 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./
 | ||
| No match
 | ||
| 
 | ||
| /abc/
 | ||
|     abc
 | ||
|  0: abc
 | ||
|     xabcy
 | ||
|  0: abc
 | ||
|     ababc
 | ||
|  0: abc
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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/
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     abbbbc
 | ||
| No match
 | ||
|     abcc
 | ||
| No match
 | ||
| 
 | ||
| /^abc/
 | ||
|     abcc
 | ||
|  0: abc
 | ||
| 
 | ||
| /^abc$/
 | ||
| 
 | ||
| /abc$/
 | ||
|     aabc
 | ||
|  0: abc
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     aabc
 | ||
|  0: abc
 | ||
|     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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     abd
 | ||
| No match
 | ||
|     abd
 | ||
| No match
 | ||
| 
 | ||
| /a[^-b]c/
 | ||
|     adc
 | ||
|  0: adc
 | ||
| 
 | ||
| /a[^]b]c/
 | ||
|     adc
 | ||
|  0: adc
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     a-c
 | ||
|  0: a-c
 | ||
|     a]c
 | ||
| No match
 | ||
| 
 | ||
| /\ba\b/
 | ||
|     a-
 | ||
|  0: a
 | ||
|     -a
 | ||
|  0: a
 | ||
|     -a-
 | ||
|  0: a
 | ||
| 
 | ||
| /\by\b/
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     xy
 | ||
| No match
 | ||
|     yz
 | ||
| No match
 | ||
|     xyz
 | ||
| No match
 | ||
| 
 | ||
| /\Ba\B/
 | ||
|     *** Failers
 | ||
|  0: a
 | ||
|     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: -
 | ||
|     *** Failers
 | ||
|  0: *
 | ||
|     -
 | ||
|  0: -
 | ||
|     a
 | ||
| No match
 | ||
| 
 | ||
| /a\sb/
 | ||
|     a b
 | ||
|  0: a b
 | ||
| 
 | ||
| /a\Sb/
 | ||
|     a-b
 | ||
|  0: a-b
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     a-b
 | ||
|  0: a-b
 | ||
|     a b
 | ||
| No match
 | ||
| 
 | ||
| /\d/
 | ||
|     1
 | ||
|  0: 1
 | ||
| 
 | ||
| /\D/
 | ||
|     -
 | ||
|  0: -
 | ||
|     *** Failers
 | ||
|  0: *
 | ||
|     -
 | ||
|  0: -
 | ||
|     1
 | ||
| No match
 | ||
| 
 | ||
| /[\w]/
 | ||
|     a
 | ||
|  0: a
 | ||
| 
 | ||
| /[\W]/
 | ||
|     -
 | ||
|  0: -
 | ||
|     *** Failers
 | ||
|  0: *
 | ||
|     -
 | ||
|  0: -
 | ||
|     a
 | ||
| No match
 | ||
| 
 | ||
| /a[\s]b/
 | ||
|     a b
 | ||
|  0: a b
 | ||
| 
 | ||
| /a[\S]b/
 | ||
|     a-b
 | ||
|  0: a-b
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     a-b
 | ||
|  0: a-b
 | ||
|     a b
 | ||
| No match
 | ||
| 
 | ||
| /[\d]/
 | ||
|     1
 | ||
|  0: 1
 | ||
| 
 | ||
| /[\D]/
 | ||
|     -
 | ||
|  0: -
 | ||
|     *** Failers
 | ||
|  0: *
 | ||
|     -
 | ||
|  0: -
 | ||
|     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
 | ||
| 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/
 | ||
|     *** Failers
 | ||
| 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/
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     effg
 | ||
| No match
 | ||
|     bcdd
 | ||
| No match
 | ||
| 
 | ||
| /((((((((((a))))))))))/
 | ||
|     a
 | ||
|  0: a
 | ||
| 
 | ||
| /(((((((((a)))))))))/
 | ||
|     a
 | ||
|  0: a
 | ||
| 
 | ||
| /multiple words of text/
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     AABC
 | ||
|  0: AABC
 | ||
|     AXYZD
 | ||
| No match
 | ||
| 
 | ||
| /a[bc]d/i
 | ||
|     ABD
 | ||
|  0: ABD
 | ||
| 
 | ||
| /a[b-d]e/i
 | ||
|     ACE
 | ||
|  0: ACE
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     A\B
 | ||
| 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
 | ||
|     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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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/
 | ||
|     *** Failers
 | ||
| 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/
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     aB
 | ||
|  0: aB
 | ||
|     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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     Ab
 | ||
| No match
 | ||
|     AB
 | ||
| No match
 | ||
| 
 | ||
| /((?-i:a))b/i
 | ||
| 
 | ||
| /((?-i:a.))b/i
 | ||
|     *** Failers
 | ||
| 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/
 | ||
|     *** Failers
 | ||
| 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?)*$/
 | ||
|     *** Failers
 | ||
| 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/
 | ||
|     *** Failers
 | ||
| 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)/
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
|  0: Failers
 | ||
|     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/
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     
 | ||
| /(?>.*)(?<=(abcd|wxyz))/
 | ||
|     alphabetabcd
 | ||
|  0: alphabetabcd
 | ||
|     endingwxyz
 | ||
|  0: endingwxyz
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     word cat dog elephant mussel cow horse canary baboon snake shark
 | ||
| No match
 | ||
|   
 | ||
| /word (?>[a-zA-Z0-9]+ ){0,30}otherword/
 | ||
|     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
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     123abcfoo
 | ||
| No match
 | ||
|     
 | ||
| /(?<=(?!...999)\d{3})foo/
 | ||
|     999foo
 | ||
|  0: foo
 | ||
|     123999foo 
 | ||
|  0: foo
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     123abcfoo
 | ||
| No match
 | ||
| 
 | ||
| /(?<=\d{3}(?!999)...)foo/
 | ||
|     123abcfoo
 | ||
|  0: foo
 | ||
|     123456foo 
 | ||
|  0: foo
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     123999foo  
 | ||
| No match
 | ||
|     
 | ||
| /(?<=\d{3}...)(?<!999)foo/
 | ||
|     123abcfoo   
 | ||
|  0: foo
 | ||
|     123456foo 
 | ||
|  0: foo
 | ||
|     *** Failers
 | ||
| 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: 
 | ||
| 
 | ||
| /^[\d-a]/
 | ||
|     abcde
 | ||
|  0: a
 | ||
|     -things
 | ||
|  0: -
 | ||
|     0digit
 | ||
|  0: 0
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     bcdef    
 | ||
| No match
 | ||
|     
 | ||
| /[[: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
 | ||
|   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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers
 | ||
| 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
 | ||
|     *** Failers 
 | ||
| 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
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     XabcY  
 | ||
| No match
 | ||
| 
 | ||
| /((?i)AB(?-i)C|D)E/
 | ||
|     abCE
 | ||
|  0: abCE
 | ||
|     DE
 | ||
|  0: DE
 | ||
|     *** Failers
 | ||
| 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: ]
 | ||
|     *** Failers
 | ||
|  0: a
 | ||
|     b     
 | ||
| No match
 | ||
| 
 | ||
| /[\z\C]/
 | ||
|     z
 | ||
|  0: z
 | ||
|     C 
 | ||
|  0: C
 | ||
|     
 | ||
| /\M/
 | ||
|     M 
 | ||
|  0: M
 | ||
|     
 | ||
| /(a+)*b/
 | ||
|     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 
 | ||
| No match
 | ||
|     
 | ||
| /(?i)reg(?:ul(?:[a<>]|ae)r|ex)/
 | ||
|     REGular
 | ||
|  0: REGular
 | ||
|     regulaer
 | ||
|  0: regulaer
 | ||
|     Regex  
 | ||
|  0: Regex
 | ||
|     regul<75>r 
 | ||
|  0: regul\xe4r
 | ||
| 
 | ||
| /<2F><><EFBFBD><EFBFBD>[<5B>-<2D><>-<2D>]+/
 | ||
|     <20><><EFBFBD><EFBFBD><EFBFBD>
 | ||
|  0: \xc5\xe6\xe5\xe4\xe0
 | ||
|     <20><><EFBFBD><EFBFBD><EFBFBD>
 | ||
|  0: \xc5\xe6\xe5\xe4\xff
 | ||
|     <20><><EFBFBD><EFBFBD><EFBFBD>
 | ||
|  0: \xc5\xe6\xe5\xe4\xc0
 | ||
|     <20><><EFBFBD><EFBFBD><EFBFBD>
 | ||
|  0: \xc5\xe6\xe5\xe4\xdf
 | ||
| 
 | ||
| /(?<=Z)X./
 | ||
|     \x84XAZXB
 | ||
|  0: XB
 | ||
| 
 | ||
| /^(?(2)a|(1)(2))+$/
 | ||
|     123a
 | ||
| Error -17 (backreference condition or recursion test not supported for DFA matching)
 | ||
| 
 | ||
| /(?<=a|bbbb)c/
 | ||
|     ac
 | ||
|  0: c
 | ||
|     bbbbc
 | ||
|  0: c
 | ||
| 
 | ||
| /abc/SS>testsavedregex
 | ||
| Compiled pattern written to testsavedregex
 | ||
| <testsavedregex
 | ||
| Compiled pattern loaded from testsavedregex
 | ||
| No study data
 | ||
|     abc
 | ||
|  0: abc
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     bca
 | ||
| No match
 | ||
|     
 | ||
| /abc/FSS>testsavedregex
 | ||
| Compiled pattern written to testsavedregex
 | ||
| <testsavedregex
 | ||
| Compiled pattern (byte-inverted) loaded from testsavedregex
 | ||
| No study data
 | ||
|     abc
 | ||
|  0: abc
 | ||
|     *** Failers
 | ||
| No match
 | ||
|     bca
 | ||
| No match
 | ||
| 
 | ||
| /(a|b)/S>testsavedregex
 | ||
| Compiled pattern written to testsavedregex
 | ||
| Study data written to testsavedregex
 | ||
| <testsavedregex
 | ||
| Compiled pattern loaded from testsavedregex
 | ||
| Study data loaded from testsavedregex
 | ||
|     abc
 | ||
|  0: a
 | ||
|     *** Failers
 | ||
|  0: a
 | ||
|     def  
 | ||
| No match
 | ||
|     
 | ||
| /(a|b)/SF>testsavedregex
 | ||
| Compiled pattern written to testsavedregex
 | ||
| Study data written to testsavedregex
 | ||
| <testsavedregex
 | ||
| Compiled pattern (byte-inverted) loaded from testsavedregex
 | ||
| Study data loaded from testsavedregex
 | ||
|     abc
 | ||
|  0: a
 | ||
|     *** Failers
 | ||
|  0: a
 | ||
|     def  
 | ||
| No match
 | ||
|     
 | ||
| /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/f
 | ||
|     this is a line\nbreak
 | ||
|  0: line\x0abreak
 | ||
|     ** Failers 
 | ||
| No match
 | ||
|     line one\nthis is a line\nbreak in the second line 
 | ||
| No match
 | ||
| 
 | ||
| /line\nbreak/mf
 | ||
|     this is a line\nbreak
 | ||
|  0: line\x0abreak
 | ||
|     ** Failers 
 | ||
| No match
 | ||
|     line one\nthis is a line\nbreak in the second line 
 | ||
| No match
 | ||
| 
 | ||
| /1234/
 | ||
|     123\P
 | ||
| Partial match: 123
 | ||
|     a4\P\R
 | ||
| No match
 | ||
| 
 | ||
| /1234/
 | ||
|     123\P
 | ||
| Partial match: 123
 | ||
|     4\P\R
 | ||
|  0: 4
 | ||
| 
 | ||
| /^/mg
 | ||
|     a\nb\nc\n
 | ||
|  0: 
 | ||
|  0: 
 | ||
|  0: 
 | ||
|     \ 
 | ||
|  0: 
 | ||
|     
 | ||
| /(?<=C\n)^/mg
 | ||
|     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/m
 | ||
|     xyz\nabc
 | ||
|  0: abc
 | ||
|     xyz\nabc\<lf>
 | ||
|  0: abc
 | ||
|     xyz\r\nabc\<lf>
 | ||
|  0: abc
 | ||
|     xyz\rabc\<cr>
 | ||
|  0: abc
 | ||
|     xyz\r\nabc\<crlf>
 | ||
|  0: abc
 | ||
|     ** Failers 
 | ||
| No match
 | ||
|     xyz\nabc\<cr>
 | ||
| No match
 | ||
|     xyz\r\nabc\<cr>
 | ||
| No match
 | ||
|     xyz\nabc\<crlf>
 | ||
| No match
 | ||
|     xyz\rabc\<crlf>
 | ||
| No match
 | ||
|     xyz\rabc\<lf>
 | ||
| No match
 | ||
|     
 | ||
| /abc$/m<lf>
 | ||
|     xyzabc
 | ||
|  0: abc
 | ||
|     xyzabc\n 
 | ||
|  0: abc
 | ||
|     xyzabc\npqr 
 | ||
|  0: abc
 | ||
|     xyzabc\r\<cr> 
 | ||
|  0: abc
 | ||
|     xyzabc\rpqr\<cr> 
 | ||
|  0: abc
 | ||
|     xyzabc\r\n\<crlf> 
 | ||
|  0: abc
 | ||
|     xyzabc\r\npqr\<crlf> 
 | ||
|  0: abc
 | ||
|     ** Failers
 | ||
| No match
 | ||
|     xyzabc\r 
 | ||
| No match
 | ||
|     xyzabc\rpqr 
 | ||
| No match
 | ||
|     xyzabc\r\n 
 | ||
| No match
 | ||
|     xyzabc\r\npqr 
 | ||
| No match
 | ||
|     
 | ||
| /^abc/m<cr>
 | ||
|     xyz\rabcdef
 | ||
|  0: abc
 | ||
|     xyz\nabcdef\<lf>
 | ||
|  0: abc
 | ||
|     ** Failers  
 | ||
| No match
 | ||
|     xyz\nabcdef
 | ||
| No match
 | ||
|        
 | ||
| /^abc/m<lf>
 | ||
|     xyz\nabcdef
 | ||
|  0: abc
 | ||
|     xyz\rabcdef\<cr>
 | ||
|  0: abc
 | ||
|     ** Failers  
 | ||
| No match
 | ||
|     xyz\rabcdef
 | ||
| No match
 | ||
|        
 | ||
| /^abc/m<crlf>
 | ||
|     xyz\r\nabcdef
 | ||
|  0: abc
 | ||
|     xyz\rabcdef\<cr>
 | ||
|  0: abc
 | ||
|     ** Failers  
 | ||
| No match
 | ||
|     xyz\rabcdef
 | ||
| No match
 | ||
|     
 | ||
| /.*/<lf>
 | ||
|     abc\ndef
 | ||
|  0: abc
 | ||
|     abc\rdef
 | ||
|  0: abc\x0ddef
 | ||
|     abc\r\ndef
 | ||
|  0: abc\x0d
 | ||
|     \<cr>abc\ndef
 | ||
|  0: abc\x0adef
 | ||
|     \<cr>abc\rdef
 | ||
|  0: abc
 | ||
|     \<cr>abc\r\ndef
 | ||
|  0: abc
 | ||
|     \<crlf>abc\ndef
 | ||
|  0: abc\x0adef
 | ||
|     \<crlf>abc\rdef
 | ||
|  0: abc\x0ddef
 | ||
|     \<crlf>abc\r\ndef
 | ||
|  0: abc
 | ||
| 
 | ||
| /\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/
 | ||
|   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 | ||
| No match
 | ||
|   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
 | ||
|  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
 | ||
| 
 | ||
| /(?>a|)*\d/
 | ||
|   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 | ||
| No match
 | ||
|   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
 | ||
|  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
 | ||
| 
 | ||
| /(?:a|)*\d/
 | ||
|   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 | ||
| No match
 | ||
|   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
 | ||
|  0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
 | ||
| 
 | ||
| /^a.b/<lf>
 | ||
|     a\rb
 | ||
|  0: a\x0db
 | ||
|     a\nb\<cr> 
 | ||
|  0: a\x0ab
 | ||
|     ** Failers
 | ||
| No match
 | ||
|     a\nb
 | ||
| No match
 | ||
|     a\nb\<any>
 | ||
| No match
 | ||
|     a\rb\<cr>   
 | ||
| No match
 | ||
|     a\rb\<any>   
 | ||
| No match
 | ||
| 
 | ||
| /^abc./mgx<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.$/mgx<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
 | ||
|     ** Failers
 | ||
| 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
 | ||
|     ** Failers
 | ||
| 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
 | ||
|     ** Failers
 | ||
| No match
 | ||
|     a\n\n\n\rb
 | ||
| No match
 | ||
|     a\r
 | ||
| No match
 | ||
| 
 | ||
| /^a[\R]b/<bsr_unicode>
 | ||
|     aRb
 | ||
|  0: aRb
 | ||
|     ** Failers
 | ||
| No match
 | ||
|     a\nb  
 | ||
| No match
 | ||
| 
 | ||
| /.+foo/
 | ||
|     afoo
 | ||
|  0: afoo
 | ||
|     ** Failers 
 | ||
| No match
 | ||
|     \r\nfoo 
 | ||
| No match
 | ||
|     \nfoo 
 | ||
| No match
 | ||
| 
 | ||
| /.+foo/<crlf>
 | ||
|     afoo
 | ||
|  0: afoo
 | ||
|     \nfoo 
 | ||
|  0: \x0afoo
 | ||
|     ** Failers 
 | ||
| No match
 | ||
|     \r\nfoo 
 | ||
| No match
 | ||
| 
 | ||
| /.+foo/<any>
 | ||
|     afoo
 | ||
|  0: afoo
 | ||
|     ** Failers 
 | ||
| No match
 | ||
|     \nfoo 
 | ||
| No match
 | ||
|     \r\nfoo 
 | ||
| No match
 | ||
| 
 | ||
| /.+foo/s
 | ||
|     afoo
 | ||
|  0: afoo
 | ||
|     \r\nfoo 
 | ||
|  0: \x0d\x0afoo
 | ||
|     \nfoo 
 | ||
|  0: \x0afoo
 | ||
| 
 | ||
| /^$/mg<any>
 | ||
|     abc\r\rxyz
 | ||
|  0: 
 | ||
|     abc\n\rxyz  
 | ||
|  0: 
 | ||
|     ** Failers 
 | ||
| No match
 | ||
|     abc\r\nxyz
 | ||
| No match
 | ||
| 
 | ||
| /^X/m
 | ||
|     XABC
 | ||
|  0: X
 | ||
|     ** Failers 
 | ||
| No match
 | ||
|     XABC\B
 | ||
| No match
 | ||
| 
 | ||
| /(?m)^$/<any>g+
 | ||
|     abc\r\n\r\n
 | ||
|  0: 
 | ||
|  0+ \x0d\x0a
 | ||
| 
 | ||
| /(?m)^$|^\r\n/<any>g+ 
 | ||
|     abc\r\n\r\n
 | ||
|  0: \x0d\x0a
 | ||
|  0+ 
 | ||
|  1: 
 | ||
|     
 | ||
| /(?m)$/<any>g+ 
 | ||
|     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
 | ||
|     ** Failers 
 | ||
| No match
 | ||
|     xyzxyz 
 | ||
| No match
 | ||
|  
 | ||
| /\H\h\V\v/
 | ||
|     X X\x0a
 | ||
|  0: X X\x0a
 | ||
|     X\x09X\x0b
 | ||
|  0: X\x09X\x0b
 | ||
|     ** Failers
 | ||
| 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
 | ||
|     ** Failers 
 | ||
| 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
 | ||
|     ** Failers
 | ||
| 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/<crlf>
 | ||
|     \r\nA
 | ||
| No match
 | ||
|     
 | ||
| /\nA/<crlf>
 | ||
|     \r\nA 
 | ||
|  0: \x0aA
 | ||
| 
 | ||
| /[\r\n]A/<crlf>
 | ||
|     \r\nA 
 | ||
|  0: \x0aA
 | ||
| 
 | ||
| /(\r|\n)A/<crlf>
 | ||
|     \r\nA 
 | ||
|  0: \x0aA
 | ||
| 
 | ||
| /a\Rb/I<bsr_anycrlf>
 | ||
| Capturing subpattern count = 0
 | ||
| Options: bsr_anycrlf
 | ||
| First char = 'a'
 | ||
| Need char = 'b'
 | ||
|     a\rb
 | ||
|  0: a\x0db
 | ||
|     a\nb
 | ||
|  0: a\x0ab
 | ||
|     a\r\nb
 | ||
|  0: a\x0d\x0ab
 | ||
|     ** Failers
 | ||
| No match
 | ||
|     a\x85b
 | ||
| No match
 | ||
|     a\x0bb     
 | ||
| No match
 | ||
| 
 | ||
| /a\Rb/I<bsr_unicode>
 | ||
| Capturing subpattern count = 0
 | ||
| Options: bsr_unicode
 | ||
| First char = 'a'
 | ||
| Need char = 'b'
 | ||
|     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
 | ||
|     ** Failers 
 | ||
| No match
 | ||
|     a\x85b\<bsr_anycrlf>
 | ||
| No match
 | ||
|     a\x0bb\<bsr_anycrlf>
 | ||
| No match
 | ||
|     
 | ||
| /a\R?b/I<bsr_anycrlf>
 | ||
| Capturing subpattern count = 0
 | ||
| Options: bsr_anycrlf
 | ||
| First char = 'a'
 | ||
| Need char = 'b'
 | ||
|     a\rb
 | ||
|  0: a\x0db
 | ||
|     a\nb
 | ||
|  0: a\x0ab
 | ||
|     a\r\nb
 | ||
|  0: a\x0d\x0ab
 | ||
|     ** Failers
 | ||
| No match
 | ||
|     a\x85b
 | ||
| No match
 | ||
|     a\x0bb     
 | ||
| No match
 | ||
| 
 | ||
| /a\R?b/I<bsr_unicode>
 | ||
| Capturing subpattern count = 0
 | ||
| Options: bsr_unicode
 | ||
| First char = 'a'
 | ||
| Need char = 'b'
 | ||
|     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
 | ||
|     ** Failers 
 | ||
| No match
 | ||
|     a\x85b\<bsr_anycrlf>
 | ||
| No match
 | ||
|     a\x0bb\<bsr_anycrlf>
 | ||
| No match
 | ||
|     
 | ||
| /a\R{2,4}b/I<bsr_anycrlf>
 | ||
| Capturing subpattern count = 0
 | ||
| Options: bsr_anycrlf
 | ||
| First char = 'a'
 | ||
| Need char = 'b'
 | ||
|     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
 | ||
|     ** Failers
 | ||
| No match
 | ||
|     a\x85\85b
 | ||
| No match
 | ||
|     a\x0b\0bb     
 | ||
| No match
 | ||
| 
 | ||
| /a\R{2,4}b/I<bsr_unicode>
 | ||
| Capturing subpattern count = 0
 | ||
| Options: bsr_unicode
 | ||
| First char = 'a'
 | ||
| Need char = 'b'
 | ||
|     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\85b
 | ||
| No match
 | ||
|     a\x0b\0bb     
 | ||
| No match
 | ||
|     ** Failers 
 | ||
| No match
 | ||
|     a\r\r\r\r\rb 
 | ||
| No match
 | ||
|     a\x85\85b\<bsr_anycrlf>
 | ||
| No match
 | ||
|     a\x0b\0bb\<bsr_anycrlf>
 | ||
| No match
 | ||
|     
 | ||
| /a(?!)|\wbc/
 | ||
|     abc 
 | ||
|  0: abc
 | ||
| 
 | ||
| /a[]b/<JS>
 | ||
|     ** Failers
 | ||
| No match
 | ||
|     ab
 | ||
| No match
 | ||
| 
 | ||
| /a[]+b/<JS>
 | ||
|     ** Failers
 | ||
| No match
 | ||
|     ab 
 | ||
| No match
 | ||
| 
 | ||
| /a[]*+b/<JS>
 | ||
|     ** Failers
 | ||
| No match
 | ||
|     ab 
 | ||
| No match
 | ||
| 
 | ||
| /a[^]b/<JS>
 | ||
|     aXb
 | ||
|  0: aXb
 | ||
|     a\nb 
 | ||
|  0: a\x0ab
 | ||
|     ** Failers
 | ||
| No match
 | ||
|     ab  
 | ||
| No match
 | ||
|     
 | ||
| /a[^]+b/<JS> 
 | ||
|     aXb
 | ||
|  0: aXb
 | ||
|     a\nX\nXb 
 | ||
|  0: a\x0aX\x0aXb
 | ||
|     ** Failers
 | ||
| No match
 | ||
|     ab  
 | ||
| No match
 | ||
| 
 | ||
| /X$/E
 | ||
|     X
 | ||
|  0: X
 | ||
|     ** Failers 
 | ||
| No match
 | ||
|     X\n 
 | ||
| No match
 | ||
| 
 | ||
| /X$/
 | ||
|     X
 | ||
|  0: X
 | ||
|     X\n 
 | ||
|  0: X
 | ||
| 
 | ||
| /xyz/C
 | ||
|   xyz 
 | ||
| --->xyz
 | ||
|  +0 ^       x
 | ||
|  +1 ^^      y
 | ||
|  +2 ^ ^     z
 | ||
|  +3 ^  ^    
 | ||
|  0: xyz
 | ||
|   abcxyz 
 | ||
| --->abcxyz
 | ||
|  +0    ^       x
 | ||
|  +1    ^^      y
 | ||
|  +2    ^ ^     z
 | ||
|  +3    ^  ^    
 | ||
|  0: xyz
 | ||
|   abcxyz\Y
 | ||
| --->abcxyz
 | ||
|  +0 ^          x
 | ||
|  +0  ^         x
 | ||
|  +0   ^        x
 | ||
|  +0    ^       x
 | ||
|  +1    ^^      y
 | ||
|  +2    ^ ^     z
 | ||
|  +3    ^  ^    
 | ||
|  0: xyz
 | ||
|   ** Failers 
 | ||
| No match
 | ||
|   abc
 | ||
| No match
 | ||
|   abc\Y
 | ||
| --->abc
 | ||
|  +0 ^       x
 | ||
|  +0  ^      x
 | ||
|  +0   ^     x
 | ||
|  +0    ^    x
 | ||
| No match
 | ||
|   abcxypqr  
 | ||
| No match
 | ||
|   abcxypqr\Y  
 | ||
| --->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/C
 | ||
|   abcxyz 
 | ||
| --->abcxyz
 | ||
| +15 ^          x
 | ||
| +15  ^         x
 | ||
| +15   ^        x
 | ||
| +15    ^       x
 | ||
| +16    ^^      y
 | ||
| +17    ^ ^     z
 | ||
| +18    ^  ^    
 | ||
|  0: xyz
 | ||
|   
 | ||
| /(?C)ab/
 | ||
|   ab
 | ||
| --->ab
 | ||
|   0 ^      a
 | ||
|  0: ab
 | ||
|   \C-ab
 | ||
|  0: ab
 | ||
|   
 | ||
| /ab/C
 | ||
|   ab
 | ||
| --->ab
 | ||
|  +0 ^      a
 | ||
|  +1 ^^     b
 | ||
|  +2 ^ ^    
 | ||
|  0: ab
 | ||
|   \C-ab    
 | ||
|  0: ab
 | ||
| 
 | ||
| /^"((?(?=[a])[^"])|b)*"$/C
 | ||
|     "ab"
 | ||
| --->"ab"
 | ||
|  +0 ^        ^
 | ||
|  +1 ^        "
 | ||
|  +2 ^^       ((?(?=[a])[^"])|b)*
 | ||
| +21 ^^       "
 | ||
|  +3 ^^       (?(?=[a])[^"])
 | ||
| +18 ^^       b
 | ||
|  +5 ^^       (?=[a])
 | ||
|  +8  ^       [a]
 | ||
| +11  ^^      )
 | ||
| +12 ^^       [^"]
 | ||
| +16 ^ ^      )
 | ||
| +17 ^ ^      |
 | ||
| +21 ^ ^      "
 | ||
|  +3 ^ ^      (?(?=[a])[^"])
 | ||
| +18 ^ ^      b
 | ||
|  +5 ^ ^      (?=[a])
 | ||
|  +8   ^      [a]
 | ||
| +19 ^  ^     )
 | ||
| +21 ^  ^     "
 | ||
|  +3 ^  ^     (?(?=[a])[^"])
 | ||
| +18 ^  ^     b
 | ||
|  +5 ^  ^     (?=[a])
 | ||
|  +8    ^     [a]
 | ||
| +17 ^  ^     |
 | ||
| +22 ^   ^    $
 | ||
| +23 ^   ^    
 | ||
|  0: "ab"
 | ||
|     \C-"ab"
 | ||
|  0: "ab"
 | ||
| 
 | ||
| /\d+X|9+Y/
 | ||
|     ++++123999\P
 | ||
| Partial match: 123999
 | ||
|     ++++123999Y\P
 | ||
|  0: 999Y
 | ||
| 
 | ||
| /Z(*F)/
 | ||
|     Z\P
 | ||
| No match
 | ||
|     ZA\P 
 | ||
| No match
 | ||
|     
 | ||
| /Z(?!)/
 | ||
|     Z\P 
 | ||
| No match
 | ||
|     ZA\P 
 | ||
| No match
 | ||
| 
 | ||
| /dog(sbody)?/
 | ||
|     dogs\P
 | ||
|  0: dog
 | ||
|     dogs\P\P 
 | ||
| Partial match: dogs
 | ||
|     
 | ||
| /dog(sbody)??/
 | ||
|     dogs\P
 | ||
|  0: dog
 | ||
|     dogs\P\P 
 | ||
| Partial match: dogs
 | ||
| 
 | ||
| /dog|dogsbody/
 | ||
|     dogs\P
 | ||
|  0: dog
 | ||
|     dogs\P\P 
 | ||
| Partial match: dogs
 | ||
|  
 | ||
| /dogsbody|dog/
 | ||
|     dogs\P
 | ||
|  0: dog
 | ||
|     dogs\P\P 
 | ||
| Partial match: dogs
 | ||
| 
 | ||
| /Z(*F)Q|ZXY/
 | ||
|     Z\P
 | ||
| Partial match: Z
 | ||
|     ZA\P 
 | ||
| No match
 | ||
|     X\P 
 | ||
| No match
 | ||
| 
 | ||
| /\bthe cat\b/
 | ||
|     the cat\P
 | ||
|  0: the cat
 | ||
|     the cat\P\P
 | ||
| Partial match: the cat
 | ||
| 
 | ||
| /dog(sbody)?/
 | ||
|     dogs\D\P
 | ||
|  0: dog
 | ||
|     body\D\R
 | ||
|  0: body
 | ||
| 
 | ||
| /dog(sbody)?/
 | ||
|     dogs\D\P\P
 | ||
| Partial match: dogs
 | ||
|     body\D\R
 | ||
|  0: body
 | ||
| 
 | ||
| /abc/
 | ||
|    abc\P
 | ||
|  0: abc
 | ||
|    abc\P\P
 | ||
|  0: abc
 | ||
| 
 | ||
| /abc\K123/
 | ||
|     xyzabc123pqr
 | ||
| Error -16 (item unsupported for DFA matching)
 | ||
|     
 | ||
| /(?<=abc)123/
 | ||
|     xyzabc123pqr 
 | ||
|  0: 123
 | ||
|     xyzabc12\P
 | ||
| Partial match at offset 6: abc12
 | ||
|     xyzabc12\P\P
 | ||
| Partial match at offset 6: abc12
 | ||
| 
 | ||
| /\babc\b/
 | ||
|     +++abc+++
 | ||
|  0: abc
 | ||
|     +++ab\P
 | ||
| Partial match at offset 3: +ab
 | ||
|     +++ab\P\P  
 | ||
| Partial match at offset 3: +ab
 | ||
| 
 | ||
| /(?=C)/g+
 | ||
|     ABCDECBA
 | ||
|  0: 
 | ||
|  0+ CDECBA
 | ||
|  0: 
 | ||
|  0+ CBA
 | ||
| 
 | ||
| /(abc|def|xyz)/I
 | ||
| Capturing subpattern count = 1
 | ||
| No options
 | ||
| No first char
 | ||
| No need char
 | ||
|     terhjk;abcdaadsfe
 | ||
|  0: abc
 | ||
|     the quick xyz brown fox 
 | ||
|  0: xyz
 | ||
|     \Yterhjk;abcdaadsfe
 | ||
|  0: abc
 | ||
|     \Ythe quick xyz brown fox 
 | ||
|  0: xyz
 | ||
|     ** Failers
 | ||
| No match
 | ||
|     thejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
 | ||
| No match
 | ||
|     \Ythejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
 | ||
| No match
 | ||
| 
 | ||
| /(abc|def|xyz)/SI
 | ||
| Capturing subpattern count = 1
 | ||
| No options
 | ||
| No first char
 | ||
| No need char
 | ||
| Subject length lower bound = 3
 | ||
| Starting chars: a d x 
 | ||
|     terhjk;abcdaadsfe
 | ||
|  0: abc
 | ||
|     the quick xyz brown fox 
 | ||
|  0: xyz
 | ||
|     \Yterhjk;abcdaadsfe
 | ||
|  0: abc
 | ||
|     \Ythe quick xyz brown fox 
 | ||
|  0: xyz
 | ||
|     ** Failers
 | ||
| No match
 | ||
|     thejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
 | ||
| No match
 | ||
|     \Ythejk;adlfj aenjl;fda asdfasd ehj;kjxyasiupd
 | ||
| No match
 | ||
| 
 | ||
| /abcd*/+
 | ||
|     xxxxabcd\P
 | ||
|  0: abcd
 | ||
|  0+ 
 | ||
|     xxxxabcd\P\P
 | ||
| Partial match: abcd
 | ||
|     dddxxx\R 
 | ||
|  0: ddd
 | ||
|  0+ xxx
 | ||
|     xxxxabcd\P\P
 | ||
| Partial match: abcd
 | ||
|     xxx\R 
 | ||
|  0: 
 | ||
|  0+ xxx
 | ||
| 
 | ||
| /abcd*/i
 | ||
|     xxxxabcd\P
 | ||
|  0: abcd
 | ||
|     xxxxabcd\P\P
 | ||
| Partial match: abcd
 | ||
|     XXXXABCD\P
 | ||
|  0: ABCD
 | ||
|     XXXXABCD\P\P
 | ||
| Partial match: ABCD
 | ||
| 
 | ||
| /abc\d*/
 | ||
|     xxxxabc1\P
 | ||
|  0: abc1
 | ||
|     xxxxabc1\P\P
 | ||
| Partial match: abc1
 | ||
| 
 | ||
| /abc[de]*/
 | ||
|     xxxxabcde\P
 | ||
|  0: abcde
 | ||
|     xxxxabcde\P\P
 | ||
| Partial match: abcde
 | ||
| 
 | ||
| /(?:(?1)|B)(A(*F)|C)/
 | ||
|     ABCD
 | ||
|  0: BC
 | ||
|     CCD
 | ||
|  0: CC
 | ||
|     ** Failers
 | ||
| No match
 | ||
|     CAD   
 | ||
| No match
 | ||
| 
 | ||
| /^(?:(?1)|B)(A(*F)|C)/
 | ||
|     CCD
 | ||
|  0: CC
 | ||
|     BCD 
 | ||
|  0: BC
 | ||
|     ** Failers
 | ||
| No match
 | ||
|     ABCD
 | ||
| No match
 | ||
|     CAD
 | ||
| No match
 | ||
|     BAD    
 | ||
| No match
 | ||
| 
 | ||
| /^(?!a(*SKIP)b)/
 | ||
|     ac
 | ||
| Error -16 (item unsupported for DFA matching)
 | ||
|     
 | ||
| /^(?=a(*SKIP)b|ac)/
 | ||
|     ** Failers
 | ||
| No match
 | ||
|     ac
 | ||
| Error -16 (item unsupported for DFA matching)
 | ||
|     
 | ||
| /^(?=a(*THEN)b|ac)/
 | ||
|     ac
 | ||
| Error -16 (item unsupported for DFA matching)
 | ||
|     
 | ||
| /^(?=a(*PRUNE)b)/
 | ||
|     ab  
 | ||
| Error -16 (item unsupported for DFA matching)
 | ||
|     ** Failers 
 | ||
| No match
 | ||
|     ac
 | ||
| Error -16 (item unsupported for DFA matching)
 | ||
| 
 | ||
| /^(?(?!a(*SKIP)b))/
 | ||
|     ac
 | ||
| Error -16 (item unsupported for DFA matching)
 | ||
| 
 | ||
| /(?<=abc)def/
 | ||
|     abc\P\P
 | ||
| Partial match at offset 3: abc
 | ||
| 
 | ||
| /abc$/
 | ||
|     abc
 | ||
|  0: abc
 | ||
|     abc\P
 | ||
|  0: abc
 | ||
|     abc\P\P
 | ||
| Partial match: abc
 | ||
| 
 | ||
| /abc$/m
 | ||
|     abc
 | ||
|  0: abc
 | ||
|     abc\n
 | ||
|  0: abc
 | ||
|     abc\P\P
 | ||
| Partial match: abc
 | ||
|     abc\n\P\P 
 | ||
|  0: abc
 | ||
|     abc\P
 | ||
|  0: abc
 | ||
|     abc\n\P
 | ||
|  0: abc
 | ||
| 
 | ||
| /abc\z/
 | ||
|     abc
 | ||
|  0: abc
 | ||
|     abc\P
 | ||
|  0: abc
 | ||
|     abc\P\P
 | ||
| Partial match: abc
 | ||
| 
 | ||
| /abc\Z/
 | ||
|     abc
 | ||
|  0: abc
 | ||
|     abc\P
 | ||
|  0: abc
 | ||
|     abc\P\P
 | ||
| Partial match: abc
 | ||
| 
 | ||
| /abc\b/
 | ||
|     abc
 | ||
|  0: abc
 | ||
|     abc\P
 | ||
|  0: abc
 | ||
|     abc\P\P
 | ||
| Partial match: abc
 | ||
| 
 | ||
| /abc\B/
 | ||
|     abc
 | ||
| No match
 | ||
|     abc\P
 | ||
| Partial match: abc
 | ||
|     abc\P\P
 | ||
| Partial match: abc
 | ||
| 
 | ||
| /.+/
 | ||
|     abc\>0
 | ||
|  0: abc
 | ||
|     abc\>1
 | ||
|  0: bc
 | ||
|     abc\>2
 | ||
|  0: c
 | ||
|     abc\>3
 | ||
| No match
 | ||
|     abc\>4
 | ||
| Error -24 (bad offset value)
 | ||
|     abc\>-4 
 | ||
| Error -24 (bad offset value)
 | ||
| 
 | ||
| /^(?:a)++\w/
 | ||
|      aaaab
 | ||
|  0: aaaab
 | ||
|      ** Failers 
 | ||
| No match
 | ||
|      aaaa 
 | ||
| No match
 | ||
|      bbb 
 | ||
| No match
 | ||
| 
 | ||
| /^(?:aa|(?:a)++\w)/
 | ||
|      aaaab
 | ||
|  0: aaaab
 | ||
|  1: aa
 | ||
|      aaaa 
 | ||
|  0: aa
 | ||
|      ** Failers 
 | ||
| No match
 | ||
|      bbb 
 | ||
| No match
 | ||
| 
 | ||
| /^(?:a)*+\w/
 | ||
|      aaaab
 | ||
|  0: aaaab
 | ||
|      bbb 
 | ||
|  0: b
 | ||
|      ** Failers 
 | ||
| No match
 | ||
|      aaaa 
 | ||
| No match
 | ||
| 
 | ||
| /^(a)++\w/
 | ||
|      aaaab
 | ||
|  0: aaaab
 | ||
|      ** Failers 
 | ||
| No match
 | ||
|      aaaa 
 | ||
| No match
 | ||
|      bbb 
 | ||
| No match
 | ||
| 
 | ||
| /^(a|)++\w/
 | ||
|      aaaab
 | ||
|  0: aaaab
 | ||
|      ** Failers 
 | ||
| No match
 | ||
|      aaaa 
 | ||
| No match
 | ||
|      bbb 
 | ||
| No match
 | ||
| 
 | ||
| /(?=abc){3}abc/+
 | ||
|     abcabcabc
 | ||
|  0: abc
 | ||
|  0+ abcabc
 | ||
|     ** Failers
 | ||
| No match
 | ||
|     xyz  
 | ||
| No match
 | ||
|     
 | ||
| /(?=abc)+abc/+
 | ||
|     abcabcabc
 | ||
|  0: abc
 | ||
|  0+ abcabc
 | ||
|     ** Failers
 | ||
| No match
 | ||
|     xyz  
 | ||
| No match
 | ||
|     
 | ||
| /(?=abc)++abc/+
 | ||
|     abcabcabc
 | ||
|  0: abc
 | ||
|  0+ abcabc
 | ||
|     ** Failers
 | ||
| No match
 | ||
|     xyz  
 | ||
| No match
 | ||
|     
 | ||
| /(?=abc){0}xyz/
 | ||
|     xyz 
 | ||
|  0: xyz
 | ||
| 
 | ||
| /(?=abc){1}xyz/
 | ||
|     ** Failers
 | ||
| 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
 | ||
| Error -26 (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
 | ||
| Error -17 (backreference condition or recursion test not supported for DFA matching)
 | ||
| 
 | ||
| /(?(R)a*(?1)|((?R))b)/
 | ||
|     aaaabcde
 | ||
| Error -26 (nested recursion at the same subject position)
 | ||
| 
 | ||
| /(a+)/O
 | ||
|     \O6aaaa
 | ||
| Matched, but offsets vector is too small to show all matches
 | ||
|  0: aaaa
 | ||
|  1: aaa
 | ||
|  2: aa
 | ||
|     \O8aaaa
 | ||
|  0: aaaa
 | ||
|  1: aaa
 | ||
|  2: aa
 | ||
|  3: a
 | ||
| 
 | ||
| /ab\Cde/
 | ||
|     abXde
 | ||
|  0: abXde
 | ||
|     
 | ||
| /(?<=ab\Cde)X/
 | ||
|     abZdeX
 | ||
|  0: X
 | ||
| 
 | ||
| /^\R/
 | ||
|     \r\P
 | ||
|  0: \x0d
 | ||
|     \r\P\P
 | ||
| Partial match: \x0d
 | ||
|     
 | ||
| /^\R{2,3}x/
 | ||
|     \r\P
 | ||
| Partial match: \x0d
 | ||
|     \r\P\P
 | ||
| Partial match: \x0d
 | ||
|     \r\r\P 
 | ||
| Partial match: \x0d\x0d
 | ||
|     \r\r\P\P
 | ||
| Partial match: \x0d\x0d
 | ||
|     \r\r\r\P  
 | ||
| Partial match: \x0d\x0d\x0d
 | ||
|     \r\r\r\P\P
 | ||
| Partial match: \x0d\x0d\x0d
 | ||
|     \r\rx
 | ||
|  0: \x0d\x0dx
 | ||
|     \r\r\rx    
 | ||
|  0: \x0d\x0d\x0dx
 | ||
| 
 | ||
| /^\R{2,3}?x/
 | ||
|     \r\P
 | ||
| Partial match: \x0d
 | ||
|     \r\P\P
 | ||
| Partial match: \x0d
 | ||
|     \r\r\P 
 | ||
| Partial match: \x0d\x0d
 | ||
|     \r\r\P\P
 | ||
| Partial match: \x0d\x0d
 | ||
|     \r\r\r\P  
 | ||
| Partial match: \x0d\x0d\x0d
 | ||
|     \r\r\r\P\P
 | ||
| Partial match: \x0d\x0d\x0d
 | ||
|     \r\rx
 | ||
|  0: \x0d\x0dx
 | ||
|     \r\r\rx    
 | ||
|  0: \x0d\x0d\x0dx
 | ||
|     
 | ||
| /^\R?x/
 | ||
|     \r\P
 | ||
| Partial match: \x0d
 | ||
|     \r\P\P 
 | ||
| Partial match: \x0d
 | ||
|     x
 | ||
|  0: x
 | ||
|     \rx  
 | ||
|  0: \x0dx
 | ||
| 
 | ||
| /^\R+x/
 | ||
|     \r\P
 | ||
| Partial match: \x0d
 | ||
|     \r\P\P 
 | ||
| Partial match: \x0d
 | ||
|     \r\n\P
 | ||
| Partial match: \x0d\x0a
 | ||
|     \r\n\P\P  
 | ||
| Partial match: \x0d\x0a
 | ||
|     \rx  
 | ||
|  0: \x0dx
 | ||
| 
 | ||
| /^a$/<CRLF>
 | ||
|     a\r\P
 | ||
| Partial match: a\x0d
 | ||
|     a\r\P\P 
 | ||
| Partial match: a\x0d
 | ||
| 
 | ||
| /^a$/m<CRLF>
 | ||
|     a\r\P
 | ||
| Partial match: a\x0d
 | ||
|     a\r\P\P 
 | ||
| Partial match: a\x0d
 | ||
| 
 | ||
| /^(a$|a\r)/<CRLF>
 | ||
|     a\r\P
 | ||
|  0: a\x0d
 | ||
|     a\r\P\P 
 | ||
| Partial match: a\x0d
 | ||
| 
 | ||
| /^(a$|a\r)/m<CRLF>
 | ||
|     a\r\P
 | ||
|  0: a\x0d
 | ||
|     a\r\P\P 
 | ||
| Partial match: a\x0d
 | ||
| 
 | ||
| /./<CRLF>
 | ||
|     \r\P
 | ||
|  0: \x0d
 | ||
|     \r\P\P 
 | ||
| Partial match: \x0d
 | ||
|   
 | ||
| /.{2,3}/<CRLF>
 | ||
|     \r\P 
 | ||
| Partial match: \x0d
 | ||
|     \r\P\P
 | ||
| Partial match: \x0d
 | ||
|     \r\r\P
 | ||
|  0: \x0d\x0d
 | ||
|     \r\r\P\P
 | ||
| Partial match: \x0d\x0d
 | ||
|     \r\r\r\P
 | ||
|  0: \x0d\x0d\x0d
 | ||
|     \r\r\r\P\P     
 | ||
| Partial match: \x0d\x0d\x0d
 | ||
| 
 | ||
| /.{2,3}?/<CRLF>
 | ||
|     \r\P 
 | ||
| Partial match: \x0d
 | ||
|     \r\P\P
 | ||
| Partial match: \x0d
 | ||
|     \r\r\P
 | ||
|  0: \x0d\x0d
 | ||
|     \r\r\P\P
 | ||
| Partial match: \x0d\x0d
 | ||
|     \r\r\r\P
 | ||
|  0: \x0d\x0d\x0d
 | ||
|  1: \x0d\x0d
 | ||
|     \r\r\r\P\P     
 | ||
| Partial match: \x0d\x0d\x0d
 | ||
| 
 | ||
| /-- Test simple validity check for restarts --/
 | ||
| 
 | ||
| /abcdef/
 | ||
|    abc\R
 | ||
| Error -30 (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\O0
 | ||
| Matched, but offsets vector is too small to show all matches
 | ||
| 
 | ||
| /-- 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
 | ||
| 
 | ||
| /-- End of testinput8 --/
 |