예제 #1
0
 def test_arg_type(self):
     self.assertRaises(TypeError, pcre2nfa, None)
     a = pcre2nfa('')
     self.assertEqual(NFA, type(a))
     test = pcre2nfa('^abc')
     self.assertTrue(test.match("abc"))
     self.assertFalse(test.match("dabc"))
예제 #2
0
 def test_arg_type(self):
     self.assertRaises(TypeError, pcre2nfa, None)
     a = pcre2nfa('')
     self.assertEqual(NFA, type(a))
     test = pcre2nfa('^abc')
     self.assertTrue(test.match("abc"))
     self.assertFalse(test.match("dabc"))
예제 #3
0
 def test_dotall(self):
     a = pcre2nfa('/abc.def/s')
     self.assertTrue(a.match('abcxdef'))
     self.assertTrue(a.match('abc\ndef'))
     self.assertFalse(a.match('abcdef'))
     a = pcre2nfa('/abc.def/')
     self.assertTrue(a.match('abcxdef'))
     self.assertFalse(a.match('abc\ndef'))
예제 #4
0
 def test_dotall(self):
     a = pcre2nfa('/abc.def/s')
     self.assertTrue(a.match('abcxdef'))
     self.assertTrue(a.match('abc\ndef'))
     self.assertFalse(a.match('abcdef'))
     a = pcre2nfa('/abc.def/')
     self.assertTrue(a.match('abcxdef'))
     self.assertFalse(a.match('abc\ndef'))
예제 #5
0
 def test_upto(self):
     a = pcre2nfa('/a{1,2}b/i')
     self.assertTrue(a.match('ab'))
     self.assertTrue(a.match('aab'))
     self.assertFalse(a.match('aaa'))
     a = pcre2nfa('/a{4,5}b/i')
     self.assertTrue(a.match('aaaab'))
     self.assertTrue(a.match('aaaaab'))
     self.assertFalse(a.match('aaaaaa'))
예제 #6
0
 def test_upto(self):
     a = pcre2nfa('/a{1,2}b/i')
     self.assertTrue(a.match('ab'))
     self.assertTrue(a.match('aab'))
     self.assertFalse(a.match('aaa'))
     a = pcre2nfa('/a{4,5}b/i')
     self.assertTrue(a.match('aaaab'))
     self.assertTrue(a.match('aaaaab'))
     self.assertFalse(a.match('aaaaaa'))
예제 #7
0
    def test_circ(self):
        a = pcre2nfa('^a')
        self.assertTrue(a.match('a'))
        self.assertTrue(a.match('ab'))
        self.assertFalse(a.match('ba'))

        a = pcre2nfa('^\s*abc')
        self.assertTrue(a.match('abc'))
        self.assertTrue(a.match(' abc'))
        self.assertTrue(a.match('       abcxyz'))
        self.assertFalse(a.match('ababc'))
예제 #8
0
    def test_circ(self):
        a = pcre2nfa('^a')
        self.assertTrue(a.match('a'))
        self.assertTrue(a.match('ab'))
        self.assertFalse(a.match('ba'))

        a = pcre2nfa('^\s*abc')
        self.assertTrue(a.match('abc'))
        self.assertTrue(a.match(' abc'))
        self.assertTrue(a.match('       abcxyz'))
        self.assertFalse(a.match('ababc'))
예제 #9
0
 def test_case_insensitive(self):
     a = pcre2nfa('/abcde/i')
     self.assertTrue(a.match('ABCDEFGHI'))
     self.assertTrue(a.match('abcdefghi'))
     self.assertTrue(a.match('aBcDeFgHi'))
     self.assertFalse(a.match('afBgChDiE'))
     a = pcre2nfa('/abcde/')
     self.assertFalse(a.match('ABCDEFGHI'))
     self.assertTrue(a.match('abcdefghi'))
     self.assertFalse(a.match('aBcDeFgHi'))
     self.assertFalse(a.match('afBgChDiE'))
예제 #10
0
 def test_case_insensitive(self):
     a = pcre2nfa('/abcde/i')
     self.assertTrue(a.match('ABCDEFGHI'))
     self.assertTrue(a.match('abcdefghi'))
     self.assertTrue(a.match('aBcDeFgHi'))
     self.assertFalse(a.match('afBgChDiE'))
     a = pcre2nfa('/abcde/')
     self.assertFalse(a.match('ABCDEFGHI'))
     self.assertTrue(a.match('abcdefghi'))
     self.assertFalse(a.match('aBcDeFgHi'))
     self.assertFalse(a.match('afBgChDiE'))
예제 #11
0
    def test_notwhitespace(self):
        a = pcre2nfa('\S')
        self.assertFalse(a.match('\x0c'))
        self.assertFalse(a.match(' '))
        self.assertFalse(a.match('\n'))
        self.assertFalse(a.match('\t'))
        self.assertTrue(a.match('a'))

        a = pcre2nfa('a\Sb')
        self.assertTrue(a.match('aab'))
        self.assertFalse(a.match('\t\n'))
        self.assertFalse(a.match('a b'))
예제 #12
0
    def test_notwhitespace(self):
        a = pcre2nfa('\S')
        self.assertFalse(a.match('\x0c'))
        self.assertFalse(a.match(' '))
        self.assertFalse(a.match('\n'))
        self.assertFalse(a.match('\t'))
        self.assertTrue(a.match('a'))

        a = pcre2nfa('a\Sb')
        self.assertTrue(a.match('aab'))
        self.assertFalse(a.match('\t\n'))
        self.assertFalse(a.match('a b'))
예제 #13
0
    def test_not_class_range(self):
        a = pcre2nfa('/a[^a-z]b/')
        for c in range(ord('a'), ord('z')):
            self.assertFalse(a.match('a' + chr(c) + 'b'))
        for c in range(32, 60):
            self.assertTrue(a.match('a' + chr(c) + 'b'))

        a = pcre2nfa('/a[^a-z]b/i')
        for c in range(ord('A'), ord('Z')):
            self.assertFalse(a.match('a' + chr(c) + 'b'))
        for c in range(ord('a'), ord('z')):
            self.assertFalse(a.match('a' + chr(c) + 'b'))
        for c in range(32, 57):
            self.assertTrue(a.match('a' + chr(c) + 'b'))
예제 #14
0
    def test_notwordchar(self):
        a = pcre2nfa('\W')
        self.assertTrue(a.match('\x0c'))
        self.assertFalse(a.match('A'))
        self.assertFalse(a.match('Z'))
        self.assertFalse(a.match('_'))
        self.assertFalse(a.match('a'))
        self.assertFalse(a.match('z'))
        self.assertTrue(a.match('\n'))

        a = pcre2nfa('a\Wb')
        self.assertFalse(a.match('aab'))
        self.assertFalse(a.match('  '))
        self.assertTrue(a.match('a b'))
예제 #15
0
    def test_notwhitespace(self):
        a = pcre2nfa('\S{1,3}')
        self.assertFalse(a.match('\x0c'))
        self.assertFalse(a.match(' '))
        self.assertFalse(a.match('\n'))
        self.assertFalse(a.match('\t'))
        self.assertTrue(a.match('a'))

        a = pcre2nfa('a\S{1,3}b')
        self.assertFalse(a.match('ab'))
        self.assertFalse(a.match('a\tb'))
        self.assertTrue(a.match('axxb'))
        self.assertTrue(a.match('axyzb'))
        self.assertFalse(a.match('attttb'))
예제 #16
0
    def test_notwhitespace(self):
        a = pcre2nfa('\S{1,3}')
        self.assertFalse(a.match('\x0c'))
        self.assertFalse(a.match(' '))
        self.assertFalse(a.match('\n'))
        self.assertFalse(a.match('\t'))
        self.assertTrue(a.match('a'))

        a = pcre2nfa('a\S{1,3}b')
        self.assertFalse(a.match('ab'))
        self.assertFalse(a.match('a\tb'))
        self.assertTrue(a.match('axxb'))
        self.assertTrue(a.match('axyzb'))
        self.assertFalse(a.match('attttb'))
예제 #17
0
    def test_notwordchar(self):
        a = pcre2nfa('\W')
        self.assertTrue(a.match('\x0c'))
        self.assertFalse(a.match('A'))
        self.assertFalse(a.match('Z'))
        self.assertFalse(a.match('_'))
        self.assertFalse(a.match('a'))
        self.assertFalse(a.match('z'))
        self.assertTrue(a.match('\n'))

        a = pcre2nfa('a\Wb')
        self.assertFalse(a.match('aab'))
        self.assertFalse(a.match('  '))
        self.assertTrue(a.match('a b'))
예제 #18
0
    def test_not_class_range(self):
        a = pcre2nfa('/a[^a-z]b/')
        for c in range(ord('a'), ord('z')):
            self.assertFalse(a.match('a' + chr(c) + 'b'))
        for c in range(32, 60):
            self.assertTrue(a.match('a' + chr(c) + 'b'))

        a = pcre2nfa('/a[^a-z]b/i')
        for c in range(ord('A'), ord('Z')):
            self.assertFalse(a.match('a' + chr(c) + 'b'))
        for c in range(ord('a'), ord('z')):
            self.assertFalse(a.match('a' + chr(c) + 'b'))
        for c in range(32, 57):
            self.assertTrue(a.match('a' + chr(c) + 'b'))
예제 #19
0
 def test_char_nocase(self):
     a = pcre2nfa('/a/i')
     self.assertTrue(a.match('a'))
     self.assertTrue(a.match('A'))
     self.assertTrue(a.match('ab'))
     self.assertTrue(a.match('bA'))
     self.assertFalse(a.match('b'))
예제 #20
0
 def test_char(self):
     a = pcre2nfa('a')
     self.assertTrue(a.match('a'))
     self.assertFalse(a.match('A'))
     self.assertTrue(a.match('ab'))
     self.assertTrue(a.match('ba'))
     self.assertFalse(a.match('b'))
예제 #21
0
 def test_dotall_n_caseless(self):
     a = pcre2nfa('/abc.ef/is')
     self.assertTrue(a.match('abcdef'))
     self.assertTrue(a.match('ABCDEF'))
     self.assertTrue(a.match('aBcDeF'))
     self.assertTrue(a.match('abC%ef'))
     self.assertTrue(a.match('abc\nef'))
예제 #22
0
    def test_brazero_any(self):
        a = pcre2nfa('a(b|c)*d')
        self.assertTrue(a.match('abd'))
        self.assertTrue(a.match('ad'))
        self.assertTrue(a.match('acd'))
        self.assertTrue(a.match('abbbbd'))
        self.assertFalse(a.match('aed'))

        a = pcre2nfa('a(b*|cd)*e')
        self.assertTrue(a.match('abe'))
        self.assertTrue(a.match('ae'))
        self.assertTrue(a.match('acde'))
        self.assertTrue(a.match('abcde'))
        self.assertTrue(a.match('abbbbe'))
        self.assertTrue(a.match('acdbcde'))
        self.assertFalse(a.match('abcbde'))
예제 #23
0
 def test_plus(self):
     a = pcre2nfa('a0+0')
     self.assertFalse(a.match('a0'))
     self.assertTrue(a.match('a00'))
     self.assertTrue(a.match('a000'))
     self.assertTrue(a.match('a0000'))
     self.assertFalse(a.match('a01'))
예제 #24
0
 def test_crquery(self):
     a = pcre2nfa('a[0-1]?a')
     self.assertTrue(a.match('aa'))
     self.assertTrue(a.match('a0a'))
     self.assertTrue(a.match('a1a'))
     self.assertFalse(a.match('a10a'))
     self.assertFalse(a.match('a9a'))
예제 #25
0
 def test_any(self):
     a = pcre2nfa('a.{2,4}a')
     self.assertFalse(a.match('aaa'))
     self.assertTrue(a.match('abba'))
     self.assertTrue(a.match('ababaa'))
     self.assertTrue(a.match('axxxxa'))
     self.assertFalse(a.match('axxxxxa'))
예제 #26
0
 def test_star(self):
     a = pcre2nfa('a0{2,}(a|b)')
     self.assertFalse(a.match('aa'))
     self.assertFalse(a.match('a0a'))
     self.assertTrue(a.match('a00a'))
     self.assertTrue(a.match('a000a'))
     self.assertFalse(a.match('a00x'))
예제 #27
0
 def test_any(self):
     a = pcre2nfa('a.*a')
     self.assertTrue(a.match('aa'))
     self.assertTrue(a.match('aaa'))
     self.assertTrue(a.match('aba'))
     self.assertTrue(a.match('acdefa'))
     self.assertFalse(a.match('axxxxxx'))
예제 #28
0
 def test_digit(self):
     a = pcre2nfa('a\d{2,3}b')
     self.assertTrue(a.match('a12b'))
     self.assertTrue(a.match('a123b'))
     self.assertFalse(a.match('a1b'))
     self.assertFalse(a.match('ab'))
     self.assertFalse(a.match('a1234b'))
예제 #29
0
 def test_notwhitespace(self):
     a = pcre2nfa('a\S+b')
     self.assertTrue(a.match('axxb'))
     self.assertTrue(a.match('axb'))
     self.assertFalse(a.match('a b'))
     self.assertFalse(a.match('ab'))
     self.assertFalse(a.match('a    b'))
예제 #30
0
 def test_crquery(self):
     a = pcre2nfa('a[0-1]?a')
     self.assertTrue(a.match('aa'))
     self.assertTrue(a.match('a0a'))
     self.assertTrue(a.match('a1a'))
     self.assertFalse(a.match('a10a'))
     self.assertFalse(a.match('a9a'))
예제 #31
0
 def test_posstar(self):
     a = pcre2nfa('a0*a')
     self.assertTrue(a.match('aa'))
     self.assertTrue(a.match('a0a'))
     self.assertTrue(a.match('a00a'))
     self.assertTrue(a.match('a000a'))
     self.assertFalse(a.match('a00b'))
예제 #32
0
 def test_notminplus(self):
     a = pcre2nfa('a[^x]+?b')
     self.assertTrue(a.match('ayb'))
     self.assertTrue(a.match('ayzb'))
     self.assertFalse(a.match('axb'))
     self.assertFalse(a.match('ab'))
     self.assertFalse(a.match('axxxxxb'))
예제 #33
0
    def test_crrange_range(self):
        a = pcre2nfa('^[abc]{2,4}x')
        self.assertFalse(a.match('bx'))
        self.assertTrue(a.match('acx'))
        self.assertTrue(a.match('abcx'))
        self.assertTrue(a.match('bbbbx'))
        self.assertFalse(a.match('bbbbbx'))
        self.assertFalse(a.match('abca'))

        a = pcre2nfa('^[abc]{0,2}x')
        self.assertTrue(a.match('x'))
        self.assertTrue(a.match('bx'))
        self.assertTrue(a.match('acx'))
        self.assertFalse(a.match('bbbx'))
        self.assertFalse(a.match('bbbbx'))
        self.assertFalse(a.match('abca'))
예제 #34
0
 def test_posplus(self):
     a = pcre2nfa('a0+a')
     self.assertFalse(a.match('aa'))
     self.assertTrue(a.match('a0a'))
     self.assertTrue(a.match('a00a'))
     self.assertTrue(a.match('a000a'))
     self.assertFalse(a.match('a00b'))
예제 #35
0
 def test_notposplus(self):
     a = pcre2nfa('a[^x]+x')
     self.assertTrue(a.match('aax'))
     self.assertTrue(a.match('abx'))
     self.assertTrue(a.match('acdefx'))
     self.assertFalse(a.match('axx'))
     self.assertFalse(a.match('ax'))
예제 #36
0
 def test_wordchar(self):
     a = pcre2nfa(':\w{2}:')
     self.assertFalse(a.match(':%%:'))
     self.assertTrue(a.match(':aA:'))
     self.assertTrue(a.match(':zZ:'))
     self.assertTrue(a.match(':_a:'))
     self.assertFalse(a.match(':aaa:'))
예제 #37
0
 def test_notposplus(self):
     a = pcre2nfa('a[^x]+x')
     self.assertTrue(a.match('aax'))
     self.assertTrue(a.match('abx'))
     self.assertTrue(a.match('acdefx'))
     self.assertFalse(a.match('axx'))
     self.assertFalse(a.match('ax'))
예제 #38
0
 def test_whitespace(self):
     a = pcre2nfa('\s')
     self.assertTrue(a.match('\x0c'))
     self.assertTrue(a.match(' '))
     self.assertTrue(a.match('\n'))
     self.assertTrue(a.match('\t'))
     self.assertFalse(a.match('a'))
예제 #39
0
 def test_char_nocase(self):
     a = pcre2nfa('/a/i')
     self.assertTrue(a.match('a'))
     self.assertTrue(a.match('A'))
     self.assertTrue(a.match('ab'))
     self.assertTrue(a.match('bA'))
     self.assertFalse(a.match('b'))
예제 #40
0
 def test_digit(self):
     a = pcre2nfa('a\d{2,3}b')
     self.assertTrue(a.match('a12b'))
     self.assertTrue(a.match('a123b'))
     self.assertFalse(a.match('a1b'))
     self.assertFalse(a.match('ab'))
     self.assertFalse(a.match('a1234b'))
예제 #41
0
    def test_brazero_any(self):
        a = pcre2nfa('a(b|c)*d')
        self.assertTrue(a.match('abd'))
        self.assertTrue(a.match('ad'))
        self.assertTrue(a.match('acd'))
        self.assertTrue(a.match('abbbbd'))
        self.assertFalse(a.match('aed'))

        a = pcre2nfa('a(b*|cd)*e')
        self.assertTrue(a.match('abe'))
        self.assertTrue(a.match('ae'))
        self.assertTrue(a.match('acde'))
        self.assertTrue(a.match('abcde'))
        self.assertTrue(a.match('abbbbe'))
        self.assertTrue(a.match('acdbcde'))
        self.assertFalse(a.match('abcbde'))
예제 #42
0
 def test_notwhitespace(self):
     a = pcre2nfa('a\S+b')
     self.assertTrue(a.match('axxb'))
     self.assertTrue(a.match('axb'))
     self.assertFalse(a.match('a b'))
     self.assertFalse(a.match('ab'))
     self.assertFalse(a.match('a    b'))
예제 #43
0
 def test_star(self):
     a = pcre2nfa('a0{2,}(a|b)')
     self.assertFalse(a.match('aa'))
     self.assertFalse(a.match('a0a'))
     self.assertTrue(a.match('a00a'))
     self.assertTrue(a.match('a000a'))
     self.assertFalse(a.match('a00x'))
예제 #44
0
 def test_wordchar(self):
     a = pcre2nfa(':\w{2}:')
     self.assertFalse(a.match(':%%:'))
     self.assertTrue(a.match(':aA:'))
     self.assertTrue(a.match(':zZ:'))
     self.assertTrue(a.match(':_a:'))
     self.assertFalse(a.match(':aaa:'))
예제 #45
0
 def test_posstar(self):
     a = pcre2nfa('a0*a')
     self.assertTrue(a.match('aa'))
     self.assertTrue(a.match('a0a'))
     self.assertTrue(a.match('a00a'))
     self.assertTrue(a.match('a000a'))
     self.assertFalse(a.match('a00b'))
예제 #46
0
 def test_notminplus(self):
     a = pcre2nfa('a[^x]+?b')
     self.assertTrue(a.match('ayb'))
     self.assertTrue(a.match('ayzb'))
     self.assertFalse(a.match('axb'))
     self.assertFalse(a.match('ab'))
     self.assertFalse(a.match('axxxxxb'))
예제 #47
0
 def test_posplus(self):
     a = pcre2nfa('a0+a')
     self.assertFalse(a.match('aa'))
     self.assertTrue(a.match('a0a'))
     self.assertTrue(a.match('a00a'))
     self.assertTrue(a.match('a000a'))
     self.assertFalse(a.match('a00b'))
예제 #48
0
 def test_plus(self):
     a = pcre2nfa('a0+0')
     self.assertFalse(a.match('a0'))
     self.assertTrue(a.match('a00'))
     self.assertTrue(a.match('a000'))
     self.assertTrue(a.match('a0000'))
     self.assertFalse(a.match('a01'))
예제 #49
0
 def test_any(self):
     a = pcre2nfa('a.*a')
     self.assertTrue(a.match('aa'))
     self.assertTrue(a.match('aaa'))
     self.assertTrue(a.match('aba'))
     self.assertTrue(a.match('acdefa'))
     self.assertFalse(a.match('axxxxxx'))
예제 #50
0
 def test_crstar(self):
     a = pcre2nfa('a[0-1]*a')
     self.assertTrue(a.match('aa'))
     self.assertTrue(a.match('a0a'))
     self.assertTrue(a.match('a10a'))
     self.assertTrue(a.match('a111000a'))
     self.assertFalse(a.match('a0012100a'))
예제 #51
0
 def test_dotall_n_caseless(self):
     a = pcre2nfa('/abc.ef/is')
     self.assertTrue(a.match('abcdef'))
     self.assertTrue(a.match('ABCDEF'))
     self.assertTrue(a.match('aBcDeF'))
     self.assertTrue(a.match('abC%ef'))
     self.assertTrue(a.match('abc\nef'))
예제 #52
0
 def test_char(self):
     a = pcre2nfa('a')
     self.assertTrue(a.match('a'))
     self.assertFalse(a.match('A'))
     self.assertTrue(a.match('ab'))
     self.assertTrue(a.match('ba'))
     self.assertFalse(a.match('b'))
예제 #53
0
 def test_whitespace(self):
     a = pcre2nfa('\s')
     self.assertTrue(a.match('\x0c'))
     self.assertTrue(a.match(' '))
     self.assertTrue(a.match('\n'))
     self.assertTrue(a.match('\t'))
     self.assertFalse(a.match('a'))
예제 #54
0
    def test_crrange_range(self):
        a = pcre2nfa('^[abc]{2,4}x')
        self.assertFalse(a.match('bx'))
        self.assertTrue(a.match('acx'))
        self.assertTrue(a.match('abcx'))
        self.assertTrue(a.match('bbbbx'))
        self.assertFalse(a.match('bbbbbx'))
        self.assertFalse(a.match('abca'))

        a = pcre2nfa('^[abc]{0,2}x')
        self.assertTrue(a.match('x'))
        self.assertTrue(a.match('bx'))
        self.assertTrue(a.match('acx'))
        self.assertFalse(a.match('bbbx'))
        self.assertFalse(a.match('bbbbx'))
        self.assertFalse(a.match('abca'))
예제 #55
0
 def test_crstar(self):
     a = pcre2nfa('a[0-1]*a')
     self.assertTrue(a.match('aa'))
     self.assertTrue(a.match('a0a'))
     self.assertTrue(a.match('a10a'))
     self.assertTrue(a.match('a111000a'))
     self.assertFalse(a.match('a0012100a'))
예제 #56
0
 def test_any(self):
     a = pcre2nfa('a.{2,4}a')
     self.assertFalse(a.match('aaa'))
     self.assertTrue(a.match('abba'))
     self.assertTrue(a.match('ababaa'))
     self.assertTrue(a.match('axxxxa'))
     self.assertFalse(a.match('axxxxxa'))
예제 #57
0
 def test_notplus(self):
     a = pcre2nfa('a[^x]+a')
     self.assertTrue(a.match('aaa'))
     self.assertTrue(a.match('aba'))
     self.assertTrue(a.match('acdefa'))
     self.assertFalse(a.match('axa'))
     self.assertFalse(a.match('acdexsda'))
     self.assertFalse(a.match('aa'))
예제 #58
0
 def test_notplus(self):
     a = pcre2nfa('a[^x]+a')
     self.assertTrue(a.match('aaa'))
     self.assertTrue(a.match('aba'))
     self.assertTrue(a.match('acdefa'))
     self.assertFalse(a.match('axa'))
     self.assertFalse(a.match('acdexsda'))
     self.assertFalse(a.match('aa'))
예제 #59
0
 def test_actual(self):
     a = pcre2nfa('/clsid\s*\x3a\s*\x7B?\s*'
                  'EC5D5118-9FDE-4A3E-84F3-C2B711740E70(\x22)?.*'
                  'DownloadCertificateExt\(/is')
     self.assertTrue(a.match('clsid:EC5D5118-9FDE-4A3E-84F3-C2B711740E70'
                             'DownloadCertificateExt('))
     self.assertTrue(a.match('CLSID : { EC5D5118-9FDE-4A3E-84F3-'
                             'C2B711740E70xxxxxxDownloadCertificateExt('))
예제 #60
0
 def test_crplus(self):
     # OP_CRPOSPLUS in pcre >= 8.34
     a = pcre2nfa('a[0-1]+a')
     self.assertTrue(a.match('a0a'))
     self.assertTrue(a.match('a10a'))
     self.assertTrue(a.match('a111000a'))
     self.assertFalse(a.match('aa'))
     self.assertFalse(a.match('a0012100a'))