在学习爬虫的过程中我们需要从网页爬取数据,然后在过滤数据,最后保存数据。其中过滤数据的时候我们需要提取这个网页中的某一部分而非全部,此时我们就要通过正则表达式去过滤,下面我通过个人的学整理了一些基础而且常见的正则表达式。
操作符 | 说明 | 实例 |
. | 表示单个字符 | |
[ ] | 字符集,对单个字符给出取值范围 | [abc]表示a、b、 C,[a-z]表示a到z单个字符 |
* | 前一个字符0次或无限次出现 | abc*表示ab、abc、abcc、 abccc等 |
+ | 前一个字符1次或无限次出现 | abc+表示abc、 abcc、 abccc等 |
? | 前一个字符0次或1次出现 | abc?表示ab. abc |
| | 左右表达式任意-一个 | abc|def表示abc、 def |
{m} | 前一个字符m次 | ab{2}c表示abbc |
{m,n} | 前一个字符出现m至n次(含n) | ab{1,2}c表示abc、abbc |
^ | 匹配字符串开头 | ^abc表示abc且在一个字符串的开头 |
$ | 匹配字符串结尾 | abc$表示abc且在一个字符串的结尾 |
( ) | 分组标记,内部只能使用|操作符 | (abc )表示abc , (abc |def)表示abc、def |
\d | 数字,等价于[0-9] | |
\w | 单词字符,等价于[A-Za-z0-9_ ] |
以上是一些操作符的基础介绍,这篇文章有相关的用法介绍:正则表达式从入门到实战
这里列举一部分常用的表达式:
一、校验数字的表达式
1. 数字:^[0-9]*$
2. n位的数字:^\d{n}$
3. 至少n位的数字:^\d{n,}$
4. m-n位的数字:^\d{m,n}$
5. 零和非零开头的数字:^(0|[1-9][0-9]*)$
6. 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$
7. 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$
8. 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$
9. 有两位小数的正实数:^[0-9]+(.[0-9]{2})?$
10. 有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$
11. 非零的正整数:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$
12. 非零的负整数:^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$
13. 非负整数:^\d+$ 或 ^[1-9]\d*|0$
14. 非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
15. 非负浮点数:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
16. 非正浮点数:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
17. 正浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
18. 负浮点数:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
19. 浮点数:^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
还有很多表达式,可以参考这篇文章:史上最全常用正则表达式大全