爬虫(7)——正则表达式

目录

 

正则表达式

什么是正则表达式

正则表达式语法(单个字符)

1.匹配某个字符串

2.点,匹配任意字符,但不能匹配换行符'\n'

3.\d,匹配0-9数字

4.\D,匹配非数字

5.\s,匹配空白字符(\n,\t,\r,空格)

6.\w,匹配a-z,A-Z,数字,下划线

7.\W,与\w匹配的相反

8..[],组合的方式,可以匹配到中括号中的任意字符

电话号码的匹配

中括号代替

正则表达式语法(多个字符)

9.*:可以匹配0-任意多的字符

10.+:可以匹配1-任意多的字符

11.?:可以匹配0或1个

12.{m}:可以匹配m个

13.{m,n}:可以匹配m到n个,以最多字符串进行匹配

正则表达式其他语法

14."^"脱帽号,

15."$"以什么结尾

16."|",选择

17.贪婪与非贪婪

匹配1-100数字



正则表达式

什么是正则表达式

正则表达式的通俗理解:按照一定的规则,从字符串中匹配出想要的部分,这个规则就是正则表达式。

正则表达式语法(单个字符)

1.匹配某个字符串

import re

#1.匹配某个字符串
text="hello"
ret=re.match('he', text)
print(ret.group())

2.点,匹配任意字符,但不能匹配换行符'\n'

#2.点,匹配任意字符,但不能匹配换行符'\n'
text="hello"
ret=re.match('.', text)
print(ret.group())

3.\d,匹配0-9数字

4.\D,匹配非数字

5.\s,匹配空白字符(\n,\t,\r,空格)

6.\w,匹配a-z,A-Z,数字,下划线

7.\W,与\w匹配的相反

8..[],组合的方式,可以匹配到中括号中的任意字符

电话号码的匹配

中括号代替

text="2589-894512"
ret=re.match('[0-9]+', text)#[0-9]代替\d
print(ret.group())
text="-894512"
ret=re.match('[^0-9]+', text)#[^0-9]代替\D
print(ret.group())

text="25a89-894512"
ret=re.match('[0-9a-zA-Z_]+', text)#[0-9a-zA-Z_]代替\w
print(ret.group())
text="-+894512"
ret=re.match('[^0-9a-zA-Z_]+', text)#[^0-9a-zA-Z_]代替\W
print(ret.group())

正则表达式语法(多个字符)

9.*:可以匹配0-任意多的字符

text="25a89-894512"
ret=re.match('\d*', text)
print(ret.group())

10.+:可以匹配1-任意多的字符

#+:可以匹配1-任意多的字符
text="25a89-894512"
ret=re.match('\w+', text)
print(ret.group())

11.?:可以匹配0或1个

#?:可以匹配0或1个
text="25a89-894512"
ret=re.match('\w?', text)
print(ret.group())

12.{m}:可以匹配m个

#{m}:可以匹配m个
text="25a89-894512"
ret=re.match('\w{3}', text)
print(ret.group())

13.{m,n}:可以匹配m到n个,以最多字符串进行匹配

#{m,n}:可以匹配m到n个,以最多字符串进行匹配
text="25a89-894512"
ret=re.match('\w{3,4}', text)
print(ret.group())

正则表达式其他语法

14."^"脱帽号,

但是match本身就是从第一个字符进行匹配,所以用search进行演示

text="ahrrt"
ret=re.search('^a',text)
print(ret.group())

15."$"以什么结尾

以@163.com结尾

text="[email protected]"
ret=re.search('\[email protected]',text)
print(ret.group())

16."|",选择

text="https://baike.baidu.com/item/Python/407313?fr=aladdin"
ret=re.match('http|https|ftp',text)
print(ret.group())

17.贪婪与非贪婪

贪婪指的是尽可能多的匹配,“+”表示,非贪婪是找到就结束匹配“?”表示

text="<h1>标题</h1>"
ret=re.match('<.+>',text)
print(ret.group())

text="<h1>标题</h1>"
ret=re.match('<.+?>',text)
print(ret.group())

匹配1-100数字

可以匹配:类似1,5,55,99,100

不可以:09,101,1000

text="100"
ret=re.match('[1-9]\d?$|100$',text)
print(ret.group())
发布了35 篇原创文章 · 获赞 4 · 访问量 2338

猜你喜欢

转载自blog.csdn.net/devilangel2/article/details/105374174