python正则表达式示例
------(?iLmsux)---------re.i|re.L...---------------------------
>>> print re.findall(r'(?i)bd','abDcc134')['bD']>>> print re.findall(r'bd','abDcc134')[]>>> print re.findall(r'(?iLmsux)bd','abDcc134')['bD']
------(?:...){m,n}---------...{m,n}合并未一组匹配--------------------------------------------------
>>> print re.findall(r'(?:abc)','abcabcabcabcabc')['abc', 'abc', 'abc', 'abc', 'abc']>>> print re.findall(r'(?:abc){3}','abcabcabcabcabc')['abcabcabc']>>> print re.findall(r'(?:abc){}','abcabcabcabcabc')[]>>> print re.findall(r'(?:abc)+','abcabcabcabcabc')['abcabcabcabcabc']>>> print re.findall(r'(?:abc)*','abcabcabcabcabc')['abcabcabcabcabc', '']>>> print re.findall(r'(?:abc)','abcabcabcabcabc')['abc', 'abc', 'abc', 'abc', 'abc']------(?#...)---------...注释-----------------------------------
>>> print re.findall(r'(?#abc)','abcabcabcabcabc')['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']>>> print re.findall(r'a(?#abc)bc','abcabcabcabcabc')['abc', 'abc', 'abc', 'abc', 'abc']
------(?=...)---------...作为匹配条件(匹配字符后必须匹配...),但不计入匹配字符----------------------
>>> print re.findall(r'a(?=\d)','abcabcabcabcabca12')['a']>>> print re.findall(r'(a|b)(?=\d)','abcabcabcabcabca12b12')['a', 'b']
------(?!...)---------...作为反匹配条件(匹配字符后必须不匹配...),但不计入匹配字符------------------
>>> print re.findall(r'(a|b)(?!\d)','abca12b12')['a', 'b']
------(?<=...)---------...作为前匹配条件(匹配字符前必须匹配...),但不计入匹配字符-------------------
>>> print re.findall(r'(?<=\d)(a|b)','abca12b12')['b']
------(?<!...)---------...作为前反匹配条件(匹配字符前必须不匹配...),但不计入匹配字符-----------------
>>> print re.findall(r'(?<!\d)(a|b)','abca12b12')['a', 'b', 'a']
------...?---------匹配的贪婪与非贪婪,python默认未贪婪,即尽可能匹配多的字符------------------------
>>> print re.findall(r'ab*','abbbbbbbbc')['abbbbbbbb']>>> print re.findall(r'ab*?','abbbbbbbbc')['a']>>> print re.findall(r'ab+?','abbbbbbbbc')['ab']>>>re.match(r'^(?:(\d)(?!.*?\1))+$',r'123456')<_sre.SRE_Match object at 0x0168FE60> 2 楼 junjie020 2011-08-14 您好!
有一个问题关于python的条件表达式的
我发现,如果在条件表达式里面,使用别名,python是不行的(我使用的版本是2.7.2和3.2.1)
如 :
reobj = re.match(r"(?P<N1>8)(?(?P=N1)8)", "88")
这样是无法匹配的,如果使用:
reobj = re.match(r"(8)(?(1)8", "88")
这样是可以的,不知道楼主是否有试过这样使用别名来引用条件表达式呢?还是我有没有写错的?
希望指教!