Open horvatha opened 7 years ago
Same to me, the problem is \d, you can use workaround
What is the workaround exactly?
@puittenbroek Write [0-9] instead of \d.
Solved in 0.3.4 after this merge: https://github.com/crdoconnor/xeger/pull/9
Still happens for me time to time with following code:
In [14]: x.xeger("((self\\.)?)?([a-zA-Z0-9_]+)\\[(['\"]?)([a-zA-Z0-9_]+)\\4\] if (['\"]?)\\5\\6 in \\1\\3 else (.*),?")
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-14-5a512d5d9301> in <module>
----> 1 x.xeger("((self\\.)?)?([a-zA-Z0-9_]+)\\[(['\"]?)([a-zA-Z0-9_]+)\\4\] if (['\"]?)\\5\\6 in \\1\\3 else (.*),?")
/tmp/xeger/.venv/lib/python3.8/site-packages/xeger/xeger.py in xeger(self, string_or_regex)
86
87 parsed = re.sre_parse.parse(pattern)
---> 88 result = self._build_string(parsed)
89 self._cache.clear()
90 return result
/tmp/xeger/.venv/lib/python3.8/site-packages/xeger/xeger.py in _build_string(self, parsed)
106 newstr = []
107 for state in parsed:
--> 108 newstr.append(self._handle_state(state))
109 return ''.join(newstr)
110
/tmp/xeger/.venv/lib/python3.8/site-packages/xeger/xeger.py in _handle_state(self, state)
111 def _handle_state(self, state):
112 opcode, value = state
--> 113 return self._cases[str(opcode).lower()](value)
114
115 def _handle_group(self, value):
/tmp/xeger/.venv/lib/python3.8/site-packages/xeger/xeger.py in <lambda>(x)
73 "assert": lambda x: ''.join(self._handle_state(i) for i in x[1]),
74 "assert_not": lambda x: '',
---> 75 "groupref": lambda x: self._cache[x],
76 'min_repeat': lambda x: self._handle_repeat(*x),
77 'max_repeat': lambda x: self._handle_repeat(*x),
KeyError: 1
The regexp below works with rstr.xeger but with xeger it raises "KeyError: CATEGORY_DIGIT".