正则匹配---爬虫中常用的

正则匹配---爬虫中常用的文章转自 http blog csdn net skyeyesxy article details 50837984 正则表达式学习链接 http www runoob com python python reg expressions html 1 正则表达式的符号与方法 常用符号 点号

大家好,我是讯享网,很高兴认识大家。

文章转自:http://blog.csdn.net/skyeyesxy/article/details/

正则表达式学习链接:http://www.runoob.com/python/python-reg-expressions.html

1.正则表达式的符号与方法

常用符号:点号,星号,问号与括号(小括号)

  • .:匹配任意字符,换行符\n除外
  • *:匹配前一个字符0次或无限次
  • ?:匹配前一个字符0次或1次
  • .*:贪心算法
  • .*?:非贪心算法
  • ():括号内的数据作为结果返回

常用方法:findall, search, sub

  • findall:匹配所有符合规律的内容,返回包含结果的列表
  • search:匹配并提取第一个规律的内容,返回一个正则表达式对象(object)
  • sub:替换符合规律的内容,返回替换后的值

1)findall

a.点号.
import re a = 'xz123' b = re.findall('x.', a) print a 
 
   
 
  • 1
  • 2
  • 3
  • 4

讯享网
  • 输出 ['xz']

.是一个占位符,一个.代表一个符号

b.星号*
讯享网import re a = 'xyxy123' b = re.findall('x*', a) print b 
 
   
 
  • 1
  • 2
  • 3
  • 4
  • 输出['x', '', 'x', '', '', '', '', '']

依次匹配字符,有则显示,无则显示''(空)。


讯享网

c.问号?
import re a = 'xy123' b = re.findall('x?', a) print b 
 
   
 
  • 1
  • 2
  • 3
  • 4
  • 单独与*一样,前面附加其他的符号将做非贪心限制
d.贪心.*
讯享网import re secret_code = 'ghkj08hs68xxIxxa14kgj4w314exxlovexxbvk14rgjhxxyouxxfj4286ykjhag2' b = re.findall('xx.*xx', secret_code) print b 
 
   
 
  • 1
  • 2
  • 3
  • 4
  • 输出['xxIxxa14kgj4w314exxlovexxbvk14rgjhxxyouxx']

只要满足条件全部显示,贪心算法

e.非贪心.*?
b = re.findall('xx.*?xx', secret_code) 
 
   
 
  • 1
  • 输出['xxIxx', 'xxlovexx', 'xxyouxx']

以上只做了解,一般只用(.*?)

f.经典用法(.*?)
讯享网b = re.findall('xx(.*?)xx', secret_code) 
 
   
 
  • 1
  • 输出['I', 'love', 'you']

()包围所需要的内容,括号内的内容作为结果返回,不需要的内容放在括号外面

2)re.S

import re secret_code = '''ghkj08hs68xxIxxa14kgj4w314exxlove xxbvk14rgjhxxyouxxfj4286ykjhag2''' #love后有换行符 b = re.findall('xx(.*?)xx', secret_code) print b 
 
   
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 输出['I', 'bvk14rgjh'],因为.不能匹配换行符。所以会一行为一个搜索项去找。匹配任何字符除了新的一行
讯享网import re secret_code = '''ghkj08hs68xxIxxa14kgj4w314exxlove xxbvk14rgjhxxyouxxfj4286ykjhag2''' #love后有换行符 b = re.findall('xx(.*?)xx', secret_code, re.S) print b 
 
   
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 输出['I', 'love\n', 'you']re.S让.匹配所有行,包括了换行符(以\n的形式出现)

3)search

re.search(pattern, string, flags=0)

小讯
上一篇 2025-02-23 20:01
下一篇 2025-04-05 12:37

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/119207.html