正则表达式

正则表达式

字符匹配

符号意义使用结果
“.”匹配除换行符以外的任何字符re.findall(’.’,‘abcbcd’)[‘a’, ‘b’, ‘c’, ‘b’, ‘c’, ‘d’]
“^”匹配字符串的开头re.findall(’^a’,‘abcbcd’)[‘a’]
“$”匹配字符串末尾或字符串末尾换行符之前re.findall(‘d$’,‘abcbcd’)[‘d’]
“*”匹配前一个re的0个或多个(贪婪的)重复。贪婪意味着它将尽可能多的重复匹配re.findall(‘b*’,‘abcbcd’)[’’, ‘b’, ‘’, ‘b’, ‘’, ‘’, ‘’]
“+”匹配前面的1次或多次(贪婪的)重复re.findall(‘bc+’,‘abcbcd’)[‘bc’, ‘bc’]
“?”匹配前面re的0或1(贪婪)re.findall(‘bc?’,‘abcbcd’)[‘bc’, ‘bc’]
*?,+?,??前三个特殊字符的非贪婪版本re.findall(‘b*?’,‘abcbcd’) re.findall(‘bc+?’,‘abcbcd’) re.findall(‘bc??’,‘abcbcd’)[’’, ‘’, ‘b’, ‘’, ‘’, ‘b’, ‘’, ‘’, ‘’] [‘bc’, ‘bc’] [‘b’, ‘b’]
{m,n}从m到n的匹配重复前面的rere.findall(‘bc{0,1}’,‘abcbcd’)[‘bc’, ‘bc’]
{m,n}?上面的非贪婪版本re.findall(‘bc{0,1}?’,‘abcbcd’)[‘b’, ‘b’]
“\”要么转义特殊字符,要么发出特殊序列的信号
[]表示一组字符,作为第一个字符的“^”表示补集re.findall(’[bc]’,‘abcbcd’) re.findall(’[^bc]’,‘abcbcd’)[‘b’, ‘c’, ‘b’, ‘c’] [‘a’, ‘d’]
“|”A B,创建一个与A或B匹配的REre.findall('bc’,‘abcbcd’)
(…)匹配括号内的re。可以在以后的字符串中检索或匹配内容re.findall(’(bc)’,‘abcbcd’)[‘bc’, ‘bc’]
(?aiLmsux)设置RE的A、I、L、M、S、U或X标志(见下文)
(?:…)常规括号的非分组版本re.findall(’(?:bc)’,‘abcbcd’)[‘bc’, ‘bc’]
(?P…)组匹配的子字符串可以通过名称访问re.findall(’(?P…)’,‘abcbcd’)[‘abc’, ‘bcd’]
(?P=name)与前面名为name的组匹配的文本匹配
(?#…)注释;忽略re.findall(’…(?#bc)’,‘abcbcd’)[‘ab’, ‘cb’, ‘cd’]
(?=…)匹配如果…匹配下一个,但不使用字符串re.findall(’.(?=.)’,‘abcbcd’)[‘a’, ‘b’, ‘c’, ‘b’, ‘c’]
(?!..)匹配如果…不匹配下一个res = re.findall(’.(?!.)’,‘abcbcd’)[‘d’]
(?<=…)如果前面有…(必须为固定长度)re.findall(’.(?<=bc)’,‘abcbcd’)[‘c’, ‘c’]
(?<!..)如果前面没有匹配…(必须为固定长度)re.findall(’.(?<!bc)’,‘abcbcd’)[‘a’, ‘b’, ‘b’, ‘d’]
(?(id/name)yes|no)匹配是模式如果ID/名称匹配的组,则为(可选)否模式,否则为
\number匹配同一号码组的内容
\A仅在字符串开头匹配re.findall(’\A123’,‘123123’)[‘123’]
\Z仅在字符串末尾匹配re.findall(‘23\Z’,‘123123’)[‘23’]
\b匹配空字符串,但仅在单词的开头或结尾
\B匹配空字符串,但不在单词的开头或结尾
\d匹配任何十进制数字;相当于带有ASCII标志的集合[0-9]内字节模式或字符串模式re.findall(’\d’,‘123456’)[‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’]
\D匹配任何非数字字符;相当于[^\d]re.findall(’\D’,‘a123b’)[‘a’, ‘b’]
\satches任何空白字符;相当于字节模式中的[\t\n\r\f\v]或带ASCII标志的字符串模式。在不带ASCII标志的字符串模式中,它将匹配整个Unicode空白字符范围。
\S匹配任何非空白字符;相当于[^\s]
\w匹配任何字母数字字符;相当于字节模式中的[A-ZA-Z0-9 UUU]或带ASCII标志的字符串模式。在不带ASCII标志的字符串模式中,它将匹配Unicode字母数字字符(字母加数字加下划线)的范围。在区域设置中,它将匹配集[0-9 UUU]加上定义的字符。作为当前区域设置的字母。
\W匹配\w的补码
\\匹配文字反斜杠

方法使用

方法使用场景
match将正则表达式模式与字符串开头匹配
fullmatch完全匹配将正则表达式模式与所有字符串匹配
search在字符串中搜索是否存在模式
sub在字符串中替换出现的模式
subn与Sub相同,但也返回所做替换的数目
split按出现的模式拆分字符串
findall在字符串中查找模式的所有匹配项
finditer返回为每个匹配生成匹配对象的迭代器
compile将模式编译为模式对象
purge清除正则表达式缓存
escape反斜杠字符串中所有非字母数字

总结

没有测试的我自己也没弄太清楚,正则表达式效率很高,比bs4等效率要高很多,所以学习爬虫需要学号正则表达式,欢迎各位评论,共同进步

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值