import re haystack = "Hello world" needle = 'ello' mo = re.search(needle, haystack) print(mo) # Does not work on python 3.6: assert isinstance(mo, re.Match) assert mo.start() == 1 assert mo.end() == 5 assert re.escape('python.exe') == 'python\\.exe' p = re.compile('ab') s = p.sub('x', 'abcabca') # print(s) assert s == 'xcxca' idpattern = r'([_a-z][_a-z0-9]*)' mo = re.search(idpattern, '7382 _boe0+2') assert mo.group(0) == '_boe0' # tes op range assert re.compile('[a-z]').match('a').span() == (0, 1) assert re.compile('[a-z]').fullmatch('z').span() == (0, 1) # test op charset assert re.compile('[_a-z0-9]*').match('_09az').group() == '_09az' # test op bigcharset assert re.compile('[你好a-z]*').match('a好z你?').group() == 'a好z你' assert re.compile('[你好a-z]+').search('1232321 a好z你 !!?').group() == 'a好z你' # test op repeat one assert re.compile('a*').match('aaa').span() == (0, 3) assert re.compile('abcd*').match('abcdddd').group() == 'abcdddd' assert re.compile('abcd*').match('abc').group() == 'abc' assert re.compile('abcd*e').match('abce').group() == 'abce' assert re.compile('abcd*e+').match('abcddeee').group() == 'abcddeee' assert re.compile('abcd+').match('abcddd').group() == 'abcddd' # test op mark assert re.compile('(a)b').match('ab').group(0, 1) == ('ab', 'a') assert re.compile('a(b)(cd)').match('abcd').group(0, 1, 2) == ('abcd', 'b', 'cd') # test op repeat assert re.compile('(ab)+').match('abab') assert re.compile('(a)(b)(cd)*').match('abcdcdcd').group(0, 1, 2, 3) == ('abcdcdcd', 'a', 'b', 'cd') assert re.compile('ab()+cd').match('abcd').group() == 'abcd' assert re.compile('(a)+').match('aaa').groups() == ('a',) assert re.compile('(a+)').match('aaa').groups() == ('aaa',) # test Match object method assert re.compile('(a)(bc)').match('abc')[1] == 'a' assert re.compile('a(b)(?Pc)d').match('abcd').groupdict() == {'a': 'c'} # test op branch assert re.compile(r'((?=\d|\.\d)(?P\d*)|a)').match('123.2132').group() == '123' assert re.sub(r'^\s*', 'X', 'test') == 'Xtest' assert re.match(r'\babc\b', 'abc').group() == 'abc' urlpattern = re.compile('//([^/#?]*)(.*)', re.DOTALL) url = '//www.example.org:80/foo/bar/baz.html' assert urlpattern.match(url).group(1) == 'www.example.org:80' assert re.compile('(?:\w+(?:\s|/(?!>))*)*').match('a /bb />ccc').group() == 'a /bb ' assert re.compile('(?:(1)?)*').match('111').group() == '111'