码迷,mamicode.com
首页 > 其他好文 > 详细

二、文本提取——正则表达式

时间:2019-03-15 01:05:02      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:需要   pre   匹配   []   基本   用法   aaaaa   次数   a*   

我们写一个爬虫, 主要还是要提取网页中的文本信息, 而正则表达式可以很容易的完成这一任务, 这节, 我们来学习一些基本的正则表达式用法, 在以后的章节中, 会在适当的时候插入一些高级用法。

在python中, 使用正则表达式需要引入re包

1. 匹配普通字符.

  任何数字, 字母, 标点符号等, 都可以直接匹配到

 1 import re
 2 
 3 # 匹配数字构成的字串123
 4 string = 012345
 5 p = re.search(123, string)
 6 print(p.group(0))
 7 
 8 # 匹配字母构成的字串abc
 9 string = 012abc345
10 p = re.search(abc, string)
11 print(p.group(0))
12 
13 # 匹配标点符号构成的字串,"}
14 string = 01234,"}5
15 p = re.search(,"}, string)
16 print(p.group(0))

2. 特殊字符.

  正则表达式中定义了一些有着特殊含义的字符, 这些字符只有使用 \ 转义以后才能按照字面意思理解

字符 含义 举例说明
^ 匹配字符串的开头 比如 ^abc 可以匹配 abcd, 但是却不能匹配 0abc
$ 匹配字符串的结尾 比如 abc$ 可以匹配123abc, 却不能匹配 123abcd
* 前一字符匹配零次或者多次 比如 ba* 可以匹配 b 或者 ba, 或者baaaaaaa
+ 前一字符匹配一次或者多次 比如 ba+ 可以匹配 ba 或者 baaaa ,但是不能匹配 b
? 前一字符匹配零次或者一次 比如 ba? 可以匹配 b 或者 ba 但不能匹配 baa
() 表示一个子表达式, 称为元组, 使用元组可以提取出子串 比如 abc(123)def , 当用来我们匹配字符串000abc123defgh时, 我们可以匹配到两个字符串, 分别是 abc123def 和 123
[] 放在[]之间的字符是或的关系,表示匹配到其中一个即可, 需要注意的是^在其中表示匹配非其中的字符的字符, 比如[^345]表示匹配不是3且不是4且不是5的字符

[abc]可以匹配字符a 也可以匹配字符 b, 还可以匹配字符 c

[^abc]可以匹配除a, b, c以外的所有字符

[0-9]可以匹配数字0,1,2,3,4,5,6,7,8,9

[a-z]可以匹配26个小写字母

[A-Z]可以匹配26个大写字母

| 表示或的关系 ab|12可以匹配到 字符串 ef12cdab34中的ab 和 12
{} 可以用于指定前一字符的匹配次数

a{3}可以匹配 字符串abaaacd中的aaa, 但不能匹配aa, a{1,3} 可以匹配 a, aa, aaa,

a{2,}表示至少匹配两个a, 

a{1, }表示至少匹配1个a, 等价于a+

a{0,}表示至少匹配0次a, 等价于a*

. 可以匹配除换行符\n之外的所有字符 比如 a.d可以匹配 a_d, abd, a0d等

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

这里对*, + , ?需要特别说明:

*和+默认采用贪婪模式, 即会尽可能多的匹配, 比如a* 会优先匹配abcaaadef中的 aaa, 而如果配合?使用, 就可以采用非贪婪模式, 比如a*? 会优先匹配abcaaadef 中的a

3.转义符

字符 含义 举例说明
\d 匹配任意数字 例如\d{3}可以匹配123, 456, 011等由任意三个数字构成的字符串
\D 匹配任意非数字字符 例如\D{2}可以匹配a_, ab, _#, aa等由任意两个非数字字符构成的字符串, 但不能匹配诸如a0, 00, _0的字符串

二、文本提取——正则表达式

标签:需要   pre   匹配   []   基本   用法   aaaaa   次数   a*   

原文地址:https://www.cnblogs.com/bzaq/p/10534520.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!