能够做简历的网站,网页源代码怎么调出来,大连h5开发公司,程序员培训班课程Python中的正则表达式
1.re模块使用入门
1.1 re.match 函数
函数定义#xff1a;
re.match 尝试从字符串的起始位置匹配一个模式#xff0c;如果不是起始位置匹配成功的话#xff0c;match() 就返回 none。
函数语法#xff1a;
re.match(pattern, string, flags0)
…Python中的正则表达式
1.re模块使用入门
1.1 re.match 函数
函数定义
re.match 尝试从字符串的起始位置匹配一个模式如果不是起始位置匹配成功的话match() 就返回 none。
函数语法
re.match(pattern, string, flags0)
函数参数说明
参数描述pattern匹配的正则表达式string要匹配的字符串。flags标志位用于控制正则表达式的匹配方式如是否区分大小写多行匹配等等。
代码示例
# re.match()
print(re.match(www,www.euansu.cn))
print(re.match(cn,www.euansu.cn))
代码执行结果 我们可以使用 group(num) 或 groups() 匹配对象函数来获取匹配表达式。
匹配对象方法描述group(num0)匹配的整个表达式的字符串group() 可以一次输入多个组号在这种情况下它将返回一个包含那些组所对应值的元组。groups()返回一个包含所有小组字符串的元组从 1 到 所含的小组号。
代码示例
strs Cats are smarter than dogs
res re.match(r(.*) are (.*?) .*, strs, re.M|re.I)
if res:print(res.group())print(res.group(1))print(res.group(2))print(res.groups())
代码执行结果 1.2 re.search 函数
函数定义
re.search 扫描整个字符串并返回第一个成功的匹配。
函数语法
re.search(pattern, string, flags0)
函数参数说明
参数描述pattern匹配的正则表达式string要匹配的字符串。flags标志位用于控制正则表达式的匹配方式如是否区分大小写多行匹配等等。
代码示例
print(re.search(www,www.euansu.cn))
print(re.search(cn,www.euansu.cn))
代码执行结果 我们可以使用 group(num) 或 groups() 匹配对象函数来获取匹配表达式。
匹配对象方法描述group(num0)匹配的整个表达式的字符串group() 可以一次输入多个组号在这种情况下它将返回一个包含那些组所对应值的元组。groups()返回一个包含所有小组字符串的元组从 1 到 所含的小组号。
代码示例
strs Cats are smarter than dogs
res re.search(r(.*) are (.*?) .*, strs, re.M|re.I)
if res:print(res.group())print(res.group(1))print(res.group(2))print(res.groups())
代码执行结果 1.3 re.sub 函数
函数定义
Python 的 re 模块提供了re.sub用于替换字符串中的匹配项。
函数语法
re.sub(pattern, repl, string, count0, flags0)
函数参数说明
参数描述pattern匹配的正则表达式repl替换的字符串也可为一个函数。string要被查找替换的原始字符串。count模式匹配后替换的最大次数默认 0 表示替换所有的匹配。
代码示例
phone 2004-959-959
# 删除字符串中非数字的内容
num re.sub(r\D,,phone)
print(num)
代码执行结果 repl也即要替换的内容是一个函数
def double(matched):value int(matched.group(value))return str(value*2)
s A23G4HFD567
# (?Pvalue\d)匹配一个或多个数字
print(re.sub((?Pvalue\d),double,s))
代码执行结果 1.4 re.compile 函数
函数定义
compile 函数用于编译正则表达式生成一个正则表达式 Pattern 对象供 match() 和 search() 这两个函数使用。
函数语法
re.compile(pattern[, flags])
函数参数定义 pattern : 一个字符串形式的正则表达式 flags : 可选表示匹配模式比如忽略大小写多行模式等具体参数为 re.I 忽略大小写 re.L 表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境 re.M 多行模式 re.S 即为 . 并且包括换行符在内的任意字符. 不包括换行符 re.U 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库 re.X 为了增加可读性忽略空格和 # 后面的注释
代码示例
pattern re.compile(r\d) # 匹配至少一个数字
# match函数匹配
res pattern.match(one12twothree34four)
print(res)
# match函数从指定的位置开始匹配
# 从e开始匹配
res pattern.match(one12twothree34four,2,10)
print(res)
# 从1开始匹配
res pattern.match(one12twothree34four,3,10)
print(res)
print(res.group(0))
print(res.start(0))
print(res.end(0))
print(res.span(0))
代码执行结果 1.5 re.findall 函数
函数定义
在字符串中找到正则表达式所匹配的所有子串并返回一个列表如果有多个匹配模式则返回元组列表如果没有找到匹配的则返回空列表。
函数语法
findall(string[, pos[, endpos]])
函数参数定义 string : 待匹配的字符串。 pos : 可选参数指定字符串的起始位置默认为 0。 endpos : 可选参数指定字符串的结束位置默认为字符串的长度。
代码示例
pattern re.compile(r\d) # 查找数字
res pattern.findall(euansu 123 google 456)
print(res)
res pattern.findall(euansu 123 google 456,0,9)
print(res)
代码执行结果 1.6 re.finditer 函数
函数定义
和 findall 类似在字符串中找到正则表达式所匹配的所有子串并把它们作为一个迭代器返回。
函数语法
re.finditer(pattern, string, flags0)
函数参数定义
参数描述pattern匹配的正则表达式string要匹配的字符串。flags标志位用于控制正则表达式的匹配方式如是否区分大小写多行匹配等等。
代码示例
res re.finditer(r\d,12a32bc43jf3)
print(res)
for item in res:print(item)print(item.group())
代码执行结果 1.7 re.split 函数
函数定义
split 方法按照能够匹配的子串将字符串分割后返回列表它的使用形式如下
函数语法
re.split(pattern, string[, maxsplit0, flags0])
函数参数定义
参数描述pattern匹配的正则表达式string要匹配的字符串。maxsplit分隔次数maxsplit1 分隔一次默认为 0不限制次数。flags标志位用于控制正则表达式的匹配方式如是否区分大小写多行匹配等等。
代码示例
print(re.findall(\W,euansu, euansu, euansu.))
# \W 匹配非字母数字及下划线
print(re.split(\W,euansu, euansu, euansu.))
print(re.split(\W,euansu, euansu, euansu.,1))
代码执行结果 2.贪婪模式与非贪婪模式
贪婪模式在正则表达式中*、、?、{n}、{n,m} 等限定符默认都是贪婪模式的。也就是说它们会尽可能多地匹配字符。
非贪婪模式在限定符后面加上 ? 可以使其变为非贪婪模式。非贪婪模式会尽可能少地匹配字符。
代码示例
# 以下的*和都是贪婪模式的匹配
# *
print(re.match(\d*,13012345678sa))
#
print(re.match(\d,13012345678sa))
# 以下的则是非贪婪模式
# ?
print(re.match(\d?,13012345678))
代码执行结果 数量匹配匹配指定数量的字符注意当指定的数量无上限的时候也是贪婪模式。
代码示例
# {m} 匹配出现的m个字符
print(re.match(\d{3},130123456789)) # 结果 130
# {m,} 匹配出现的m以上的字符
print(re.match(\d{3,},130123456789)) # 结果 130123456789
# {m,n} 匹配出现的[3,5]之间的字符
print(re.match(\d{3,5},130123456789)) # 结果 13012
代码执行结果 3.正则表达式的修饰符
正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。多个标志可以通过按位 OR(|) 它们来指定。
修饰符描述re.I使匹配对大小写不敏感re.L做本地化识别locale-aware匹配re.M多行匹配影响 ^ 和 $re.S使 . 匹配包括换行在内的所有字符re.U根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.re.X该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。
代码示例
print(re.match(www,WWW.EUANSU.CN))
print(re.match(www,WWW.EUANSU.CN,re.I|re.U))
代码执行结果 4.正则表达式的语法
模式描述^匹配字符串的开头$匹配字符串的末尾。.匹配任意字符除了换行符当re.DOTALL标记被指定时则可以匹配包括换行符的任意字符。[...]用来表示一组字符,单独列出[amk] 匹配 am或k[^...]不在[]中的字符abc 匹配除了a,b,c之外的字符。re*匹配0个或多个的表达式。re匹配1个或多个的表达式。re?匹配0个或1个由前面的正则表达式定义的片段非贪婪方式re{ n}精确匹配 n 个前面表达式。例如 o{2} 不能匹配 Bob 中的 o但是能匹配 food 中的两个 o。re{ n,}匹配 n 个前面表达式。例如 o{2,} 不能匹配Bob中的o但能匹配 foooood中的所有 o。o{1,} 等价于 o。o{0,} 则等价于 o*。re{ n, m}匹配 n 到 m 次由前面的正则表达式定义的片段贪婪方式a| b匹配a或b(re)对正则表达式分组并记住匹配的文本(?imx)正则表达式包含三种可选标志i, m, 或 x 。只影响括号中的区域。(?-imx)正则表达式关闭 i, m, 或 x 可选标志。只影响括号中的区域。(?: re)类似 (...), 但是不表示一个组(?imx: re)在括号中使用i, m, 或 x 可选标志(?-imx: re)在括号中不使用i, m, 或 x 可选标志(?#...)注释.(? re)前向肯定界定符。如果所含正则表达式以 ... 表示在当前位置成功匹配时成功否则失败。但一旦所含表达式已经尝试匹配引擎根本没有提高模式的剩余部分还要尝试界定符的右边。(?! re)前向否定界定符。与肯定界定符相反当所含表达式不能在字符串当前位置匹配时成功(? re)匹配的独立模式省去回溯。\w匹配字母数字及下划线\W匹配非字母数字及下划线\s匹配任意空白字符等价于 [ \t\n\r\f]。\S匹配任意非空字符\d匹配任意数字等价于 [0-9].\D匹配任意非数字\A匹配字符串开始\Z匹配字符串结束如果是存在换行只匹配到换行前的结束字符串。\z匹配字符串结束\G匹配最后匹配完成的位置。\b匹配一个单词边界也就是指单词和空格间的位置。例如 er\b 可以匹配never 中的 er但不能匹配 verb 中的 er。\B匹配非单词边界。er\B 能匹配 verb 中的 er但不能匹配 never 中的 er。\n, \t, 等.匹配一个换行符。匹配一个制表符。等\1...\9匹配第n个分组的内容。\10匹配第n个分组的内容如果它经匹配。否则指的是八进制字符码的表达式。