LoginSignup
1

More than 5 years have passed since last update.

sre_parse.parse keyword

Posted at

sre_parse.parse returns tree of automaton for regular expression.
Since there are no document, this note was taken.
(python 2.7)

import sre_parse
tree=sre_parse.parse(Regex)
print(tree)
  • LITERAL
('literal', <char code> )
>>> sre_parse.parse(r'a')
[('literal', 97)]
  • NOT_LITERAL 
('not_literal', <char code> )
>>> sre_parse.parse(r'[^a]')
[('not_literal', 97)]
  • ANY
('any', None)
>>> sre_parse.parse(r'.')
[('any', None)]
  • AT
('at', <type of position> )
>>> sre_parse.parse(r'^1')
[('at', 'at_beginning'), ('literal', 49)]
  • IN
('in', [ ] )
>>> sre_parse.parse(r'[abc]')
[('in', [('literal', 97), ('literal', 98), ('literal', 99)])]
  • NEGATE
('negate', None)
>>> sre_parse.parse(r'[^1234]')
[('in', [('negate', None), ('literal', 49), ('literal', 50), ('literal', 51), ('literal', 52)])]
  • SUBPATTERN (note: python3 has different format)
('subpattern',( <match number>, [] ))
 >>> sre_parse.parse(r'(ab)c')
[('subpattern', (1, [('literal', 97), ('literal', 98)])), ('literal', 99)]
  • RANGE
 ('range',( <start char code>, <end char code> ))
>>> sre_parse.parse(r'[1-9]')
[('in', [('range', (49, 57))])]
  • MAX_REPEAT/MIN_REPEAT
('max_repeat', (<min repeat>, <max repeat number>, [] )
>>> sre_parse.parse(r'a{5,8}')
[('max_repeat', (5, 8, [('literal', 97)]))]
  • BRANCH
('branch', (None, [ [], [] ] ))
>>> sre_parse.parse(r'abc|def')
[('branch', (None, [[('literal', 97), ('literal', 98), ('literal', 99)], [('literal', 100), ('literal', 101), ('literal', 102)]]))]
  • CATEGORY
('category', <category type> )
>>> sre_parse.parse(r'\d')
[('in', [('category', 'category_digit')])]
  • GRPUPREF
('groupref', <group reference number> )
>>> sre_parse.parse(r'(?P<abc>12)3(?P=abc)')
[('subpattern', (1, [('literal', 49), ('literal', 50)])), ('literal', 51), ('groupref', 1)]
  • ASSERT_NOT
('assert_not', (<match number>, []))
>>> sre_parse.parse(r'1(?!12)')
[('literal', 49), ('assert_not', (1, [('literal', 49), ('literal', 50)]))]

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1