python爬虫基础--5(正则表达式)

1,特殊字符^,$,.,*

import re

str = "zhaoheng"
^ 匹配字符串的开头,.匹配任意字符
*匹配0次或多次,$匹配字符串的结尾,+至少匹配一次

#表示,匹配以z开头的,中间任意字符,后面以g结尾的
reg_str = "^z.*g$"
if re.match(reg_str,str):
    print("yes")

2,非贪婪匹配之?

import re

str = "zhoooohheng"
#想将两个h之间的拿出来,即 hoooooh,但是拿出来的是hh
#贪婪匹配,是反向匹配的,一直往后找
reg_str = ".*(h.*h).*"#用括号括起来提取子串
match_obj = re.match(reg_str,str)
if match_obj:
    print(match_obj.group(1))

?匹配0次或一次
让它变成非贪婪匹配,即从左边开始

reg_str = ".*?(h.*?h).*"   *?重复任意次,但尽可能少重复
#第二个?也必须加,否则第二个是从右边来的

3,{2},{2,},{2,4}

{2}出现两次
{2,4}最少2次,最多4次

4, | 或

import re

str = "zhaoheng"
#首先是以最外层的括号为顺序
reg_str = "((wang|zhao)heng)"
match_obj = re.match(reg_str,str)
if match_obj:
    print(match_obj.group(1))

5,中括号
(1)[]匹配括号里的任意字符
(2)可以写成区间

import re

str = "15536397338"
reg_str = "(1[583][0-9]{9})"
match_obj = re.match(reg_str,str)
if match_obj:
    print(match_obj.group(1))

(3)匹配不在字符中的任意单一字符 [^]
(4)进入中括号里的字符不再有特殊含义

6,\s ,\S ,\w , \W

\s 匹配空白符
eg: "你\s好"==="你 好"

\S匹配非空白字符

\w任意字符,包括字母,数字,下划线
\w ==[A-Za-z0-9]

\w非任意字符,包括字母,数字,下划线

7,[\4E00-\u9FA5]表示汉字

import re

str = " study in 中北大学"
#注意非贪婪匹配
reg_str = ".*?([\4E00-\u9FA5]+大学)"
match_obj = re.match(reg_str,str)
if match_obj:
    print(match_obj.group(1))

8,\d匹配数字

import re

str = " 出生于2001年"
#reg_str = ".*?(\d+)"
reg_str = ".*(\d{4})"
match_obj = re.match(reg_str,str)
if match_obj:
    print(match_obj.group(1))

9,例子

import re

str = " 出生于2001年6月1日"
str1 = " 出生于2001/6/1"
str2 = " 出生于2001-6-1"
str3= " 出生于2001-06-01"
str4 = " 出生于2001-6"
reg_str = ".*(\d{4}[年/-]\d{1,2}([月/-]\d{1,2}|$))"
match_obj = re.match(reg_str,str)
if match_obj:
    print(match_obj.group(1))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值