regex - Python: substituting a regular expression into a string to be used as a regular expression -
i have string:
s = 'this number -n-' i want substitute -n- placeholder regular expression:
s = 'this number (\d+)' so can later use s regular expression match against string:
re.match(s, 'this number 2') however, i'm not able s substitute in regular expression doesn't escape slash:
re.sub('-n-', r'(\d+)', 'this number -n-') # returns 'this num (\\d+)' please let me know i'm doing wrong here. thanks!
your string contains single \, use print see actual string output:
str version:
>>> print re.sub(r'-n-', r'(\d+)', 'this number -n-') number (\d+) repr versions:
>>> re.sub(r'-n-', r'(\d+)', 'this number -n-') 'this number (\\d+)' >>> print repr(re.sub(r'-n-', r'(\d+)', 'this number -n-')) 'this number (\\d+)' so, regex going work fine:
>>> patt = re.compile(re.sub(r'-n-', r'(\d+)', 'this number -n-')) >>> patt.match('this number 20').group(1) '20' >>> regex = re.sub(r'-n-', r'(\d+)', 'this number -n-') >>> re.match(regex, 'this number 20').group(1) '20' for more info: difference between __str__ , __repr__ in python
Comments
Post a Comment