python split 正则正则里怎么套函数,有大神指点

Python中如何用正则表达式获取指定内容_百度知道python之路(12)
match()和search()函数:
都会进行匹配,返回的是一个match对象类型,如果没有匹配项则返回NULL,如下:
如上当没有匹配项时会出现为NULL,这一特点可以用来判断,这在自动化的脚本程序中经常要用到,如下:
x=csvt_re.match('hello csvt')
finditer()函数:
返回一个迭代器对象,如下使用方式:
如上finditer()可以返回一个iterator对象,而x.next()返回的是一个match_object对象
match_object对象有如下方法:
group():可以显示匹配的对象
span():位置元组(起始位置和末尾位置)
start():起始位置
end():末尾位置
常用支持正则表达式的函数:
如上可以看出replace不支持正则表达式,其中的‘..’并没有被按照元字符识别出来
replace可以被sub或者subn函数替代,区别在于subn可以显示出被替换的字符串的个数,如下:
如上是可以识别出正则表达式的
之前我们讲过split()函数只能指定一个分隔符,具体可以看之前字符串分割函数的讲解
注意如上是可以分割的,‘+-*’是分隔符,但是注意要使用转义字符'\',如果不使用转义字符则会出现问题,因为在正则表达式中+表示一个或者多个,-在字符集中表示范围,*表示之前的字符有0个或者多个,所以均需要去除特殊含义
match():决定RE是否在字符串刚开始的位置匹配
search():扫描字符串,找到RE匹配的位置
findall():作为列表返回
finditer():找到匹配的所有子串,把它们作为一个迭代器返回
如上可以看到正则表达式模块的特殊字符S的含义:使‘.’匹配包含换行在内的所有字符
下面总结常用特殊字符的用法:
S:使.匹配换行在内的所有字符
I:使匹配的大小写不敏感(之前有过此实例)
M:多行匹配,影响^和$(这一点尤其重要)
X:能够使用RES的verbose状态,使之被组织更清晰易懂
如上可以看到当执行re.findall(res,s)时返回为空,因为在默认情况下他会识别到\n这个字符,此时要使用re.M,来跳过多行字符串中的\n字符,但是注意这里的匹配表达式有^字符,如果没有^或者$时怎么办呢?如下使用re.X:
如上和上一个实例的问题也一样,但是没有^或者$,可以使用re.X.
如上当匹配成功时会返回match object,但是注意‘。’要加转义处理\
注意:从findall函数可以看出最后显示出来的是分组内的内容,分组外的内容被屏蔽掉,这种特性是非常重要的,这样可以在爬虫等程序中只返回我们关注的部分
如上s是一段字符串,可以看做是一段web字段,在第一个r1正则表达式中可以看到执行findall时会将所有的字段内容显示出来。
但是我们可能只关注‘=’后面的内容,所以可以将=后面的内容设置为分组结构,这样当findall时就会显示出来
这在爬虫程序中格外有用哦!
下一讲:python实现爬虫
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:28135次
排名:千里之外
原创:51篇
(8)(11)(17)(4)(3)(8)(7)python正则表达式怎么提取?
网页里有这句 &input type="hidden" name="formhash" value="8a3ffba2" /&我想弄出value=后面的8a3ffba2,怎么写?
A= "&input type=\"hidden\" name=\"formhash\" value=\"8a3ffba2\"/&"p = re.findall("formhash\" value=\"(.*)\"", A)
re.search(r'&input type="hidden" name="formhash" value="(\w*)" /&', html).group(1)r'&input type="hidden" name="formhash" value="(\w*)" /&',r是干嘛用的,看到好多正则前面都有
re.findall 多简单啊.
这样?A= "&input type=\"hidden\" name=\"formhash\"8a3ffba2\"/&"reso=re.sub("&input type=\"hidden\" name=\"formhash\" value=","",A)formhash=re.sub("\"","",reso)
&&&p = re.compile(r'&input type="hidden" name="formhash" value="(\w*)')&&&match = p.search(html)&&&print match.group(1)&&&8a3ffba2或者直接用re模块方法&&&print re.search(r'&input type="hidden" name="formhash" value="(\w*)" /&', html).group(1)&&&8a3ffba2
已有帐号?
无法登录?
社交帐号登录Python中正则表达式如何写_百度知道

我要回帖

更多关于 python正则表达式函数 的文章

 

随机推荐