失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 正则 不能有中文逗号_Python爬虫教程-19-数据提取-正则表达式(re)

正则 不能有中文逗号_Python爬虫教程-19-数据提取-正则表达式(re)

时间:2024-02-18 12:07:34

相关推荐

正则 不能有中文逗号_Python爬虫教程-19-数据提取-正则表达式(re)

正则表达式:一套规则,可以在字符串文本中进行搜查替换等正则使用步骤:

1.使用 compile 函数将正则表达式的字符串编译成一个 pattern 对象

2.通过 pattern 对象的一些方法对文本进行匹配,匹配结果是一个 match 对象

3.用 match 对象的方法,对结果进行操作

正则的常用方法:

match:从开始位置开始查找,一次匹配,即1次匹配成功则退出search:从任何位置开始查找,一次匹配findall:全部匹配,返回列表finditer:全部匹配,返回迭代器split:分割字符串,返回列表sub:替换

匹配中文

中文是Unicode编码(utf-8也是Unicode编码),范围:主要在[u4e00-u9fa5]中文全角逗号一类的不在[u4e00-u9fa5]范围内

贪婪与非贪婪模式

贪婪模式:在整个表达式匹配成功的前提下,尽可能多的匹配非贪婪模式:在整个表达式匹配成功的前提下,尽可能少的匹配python里面数量词默认是贪婪模式

例如:

查找文本abbbbbbbcccre结果是: ab*贪婪模式结果是:abbbbbbb非贪婪模式结果是:a

案例v23

# 正则结果match的使用案例import re# 以下正则分成2个组,以小括号为单位# [a-z]表示出现小写a-z任意字母都可以,+表示至少出现1次# 两组之间有一个空格,表示匹配的两个英文字符之间有空格s = r"([a-z]+) ([a-z]+)"# 编译pattern = pile(s, re.I) # s, I表示忽略大小写m = pattern.match("Hello world wide web")# group(0) 表示返回整个匹配成功的字符串,即所有小组s = m.group(0)print("所有小组的匹配结果:n", s)# 返回匹配成功的整个字符串的跨度,即所有小组a = m.span(0)print("所有小组的匹配结果跨度:n", a)# group(0) 表示返回的第一个分组匹配成功的字符串s = m.group(1)print("第1小组的匹配结果:n", s)# 返回匹配成功的整个字符串的跨度a = m.span(1)print("第1小组的匹配结果跨度:n", s)# groups() 打印出所有的小组,等价于m.group(1), m.group(2)...s = m.groups()print(s)

运行结果

从结果可以看到:匹配到两个小组,一个Hello,一个world,中间的空格是外面的,代码中包含一些具体的输出格式

案例v24

# search的基本使用import res = r'd+'pattern = pile(s)# 无参数表示从头开始查找,到最后结束m = pattern.search("one12two34three56")print(m.group(0))# 参数表明搜查的范围,例如:10-40m = pattern.search("one12two34three56", 10, 40)print(m.group(0))

运行结果

因为是从第10个开始查找,所以查到的是56

案例v25

# findall,finditer的基本使用import res = r'd+'pattern = pile(s)m = pattern.findall("I am 18 years old, and 185 high")print(m)n = pattern.finditer("I am 18 years old, and 185 high")print(type(n))# 迭代器使用for循环输出for i in n:# 只输出i会包含无用数据print(i.group())

运行结果

查找所有匹配的字符串

匹配中文

代码

import rehello = u'你好,再见陌生人'# 中文全角逗号一类的不在[u4e00-u9fa5]范围内pattern = pile(r'[u4e00-u9fa5]+')m = pattern.findall(hello)print(m)

运行结果

因为中文全角逗号一类的不在[u4e00-u9fa5]范围内,所在 findall 返回的是一个列表,包含两个值

原文:

/qq_40147863/article/details/82181151​

如果觉得《正则 不能有中文逗号_Python爬虫教程-19-数据提取-正则表达式(re)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。