- Python正则表达式:
1.(?<=re):向后匹配,positive lookbehind assertion,可以实现更精准的定位
eg. 匹配“=”后面的字符串
s='1234=python1'
print s.findall('(?<==)\w+'
结果:python1
2.(?=re):向前匹配
eg.匹配"="之前的字符串
s='1234=python1'
print s.findall('\w+(?==)'
结果:1234
注:向前匹配和向后匹配的位置不能放反,不然pipeibu
3.findall()函数:以字符串列表的形式,返回匹配的不重叠的字符串。如果正则表达式里有多个组(group),则返回一个元组的列表,此时列表的每个元素是一个按从左到右的组(group)的顺序的元组。当匹配不到,返回空列表[ ]。(python英文手册翻译而来,恐有差异)
eg.s = 'python'
print s.findall('python')结果:['python']
print s.findall('(p)ython')结果:['p'] (注:组是按括号从左到右的顺序来的,跟group(0)不一样)
print s.findall('(p)ytho(n)')结果:[('p', 'n')]
print s.findall('((p)ytho(n))')结果:[('python', 'p', 'n')]
- 错误:TypeError: getProjectIds() takes exactly 2 arguments (3 given)
原因是调用getProjectIds方法 的时候,显式传了self:self.getProjectIds(self, msg),在调用时python自动会把自身(self)传递过去
解决办法:1.调用时不加self:self.getProjectIds( msg)
2.将getProject方法声明为静态方法,即加上@staticmethod,则可如此调用:self.getProjectIds(self, msg)