Python爬虫02:匹配多个字符

  • 内容
  • 相关

正则表达式 - 匹配多个字符

目标

  • 知道*、+、?匹配前一个字符串的范围

1. 匹配多个字符的相关格式

代码 功能
* 匹配前一个字符出现0次或者无限次,即可有可无
+ 匹配前一个字符出现1次或者无限次,即至少有1次
? 匹配前一个字符出现1次或者0次,即要么有1次,要么没有
{m} 匹配前一个字符出现m次
{m,n} 匹配前一个字符出现从m到n次

示例1:*

需求:匹配出一个字符串第一个字母为大小字符,后面都是小写字母并且这些小写字母可 有可无

import re

ret = re.match("[A-Z][a-z]*","M")
print(ret.group())

ret = re.match("[A-Z][a-z]*","MnnM")
print(ret.group())

ret = re.match("[A-Z][a-z]*","Aabcdef")
print(ret.group()) 

运行结果:

M
Mnn
Aabcdef 

示例2:+

需求:匹配一个字符串,第一个字符是t,最后一个字符串是o,中间至少有一个字符

import re


match_obj = re.match("t.+o", "two") if match_obj:
    print(match_obj.group()) else:
    print("匹配失败") 

运行结果:

two 

示例3:?

需求:匹配出这样的数据,但是https 这个s可能有,也可能是http 这个s没有

 import re

match_obj = re.match("https?", "http") if match_obj:
    print(match_obj.group()) else:
    print("匹配失败") 

运行结果:

https 

示例4:{m}、{m,n}

需求:匹配出,8到20位的密码,可以是大小写英文字母、数字、下划线

import re


ret = re.match("[a-zA-Z0-9_]{6}","12a3g45678")
print(ret.group())

ret = re.match("[a-zA-Z0-9_]{8,20}","1ad12f23s34455ff66")
print(ret.group()) 

运行结果:

 12a3g4 1ad12f23s34455ff66 

思考

如何使用正则表达式把qq:10567这样的数据匹配处理?

您阅读这篇文章共花了:  

本文标签:

版权声明:转载请带上版权原创为《星城

解压密码:若设有密码均为:www.xcooo.cn

收录状态:百度已收录点击查看详情

Python爬虫02:匹配多个字符

发表评论

您可以选择匿名评论,保护个人隐私 !