Welcome

首页 / 正则表达式 / Python爬虫正则表达式常用符号和方法

正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的部分。
1、常用符号
. :匹配任意字符,换行符 除外
:匹配前一个字符0次或无限次
? :匹配前一个字符0次或1次
.* :贪心算法,尽可能的匹配多的字符
.*? :非贪心算法
() :括号内的数据作为结果返回
2、常用方法
findall:匹配所有符合规律的内容,返回包含结果的列表
Search:匹配并提取第一个符合规律的内容,返回一个正则表达式对象
Sub:替换符合规律的内容,返回替换后的值
3、使用示例
(1). 的使用举例,匹配任意字符,换行符 除外
import re #导入re库文件
a = "xy123"
b = re.findall("x..",a)
print b
打印的结果为:["xy1"] ,每个 . 表示一个占位符
(2) * 的使用举例,匹配前一个字符0次或无限次
a = "xyxy123"
b = re.findall("x*",a)
print b
打印的结果为:["x", "", "x", "", "", "", "", ""]
(3) ? 的使用举例,匹配前一个字符0次或1次
a = "xy123"
b = re.findall("x?",a)
print b
打印的结果为:["x", "", "", "", "", ""]
(4) .* 的使用举例
secret_code = "hadkfalifexxIxxfasdjifja134xxlovexx23345sdfxxyouxx8dfse"
b = re.findall("xx.*xx",secret_code)
print b
打印的结果为:["xxIxxfasdjifja134xxlovexx23345sdfxxyouxx"]
(5).*?的使用举例
secret_code = "hadkfalifexxIxxfasdjifja134xxlovexx23345sdfxxyouxx8dfse"
c = re.findall("xx.*?xx",secret_code)
print c
打印的结果为:["xxIxx", "xxlovexx", "xxyouxx"]
(6) ()的使用举例
secret_code = "hadkfalifexxIxxfasdjifja134xxlovexx23345sdfxxyouxx8dfse"
d = re.findall("xx(.*?)xx",secret_code)
print d
打印的结果为:["I", "love", "you"] ,括号内的数据作为返回的结果
(7) re.S的使用举例
s = """sdfxxhello
xxfsdfxxworldxxasdf"""
d = re.findall("xx(.*?)xx",s,re.S)
print d
打印的结果为:["hello ", "world"] ,re.S的作用是使 . 在匹配时包括
(8) findall的使用举例
s2 = "asdfxxIxx123xxlovexxdfd"
f2 = re.findall("xx(. ?)xx123xx(. ?)xx",s2)
print f20
打印的结果为:love
这时f2为含有一个元组的列表,该元组包含两个元素,该元组中的两个元素为两个()匹配到的内容,如果s2包含多个"xx(. ?)xx123xx(. ?)xx"这样的子串,则f2包含多个元组;
(9) search的使用举例
s2 = "asdfxxIxx123xxlovexxdfd"
f = re.search("xx(. ?)xx123xx(. ?)xx",s2).group(2)
print f
打印的结果为:love
.group(2) 表示返回第二个括号匹配到的内容,如果是 .group(1), 则打印的就是:I
(10)sub的使用举例
s = "123rrrrr123"
output = re.sub("123(.*?)123","123%d123"%789,s)
print output
打印的结果为:123789123
其中的%d类似于C语言中的%d,如果 output=re.sub("123(.*?)123","123789123",s),输出结果也为: 123789123
(11) d 的使用举例,用于匹配数字
a = "asdfasf1234567fasd555fas"
b = re.findall("(d+)",a)
print b
打印的结果为:["1234567", "555"] , d+ 可以匹配数字字符串;
以上就是python爬虫正则表达式的一些常用符号和语法,希望对python初学者学习有所帮助。