前言
在bs4的查找方法中必须将想查找的对象的正确名称做为参数输入,但很多情况下我们并不知道我们要查找的对象的全部名称,例如我们想将名称中含"a"的对象全部找出,这种时候就需要用正则表达式来表示对象名称。
正文
正则表达式是为了简洁明了地表示出任意组合与数量的字符而诞生的,其常用的基本语法如下:
操作符 | 说明 | 实例 |
. | 表示任何单个字符 | |
[ ] | 字符集,对单个字符给出取值范围 | [abc]表示a, b, c, [a-z]表示a到z单个字符 |
[^ ] | 非字符集,对单个字符给出排除范围 | [^abc]表示非a或b或c的单个字符 |
* | 前一个字符0次或无限次扩展 | abc*表示ab, abc, abcc, abccc等 |
+ | 前一个字符1次或无限次扩展 | abc+表示abc, abcc, abccc等 |
? | 前一个字符0次或1次扩展 | abc?表示ab, abc |
| | 左右表达式任意一个 | abc|edf表示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] |
下面我们举几个实例来简要说明一下:
P(Y|YT|YTH|YTHO)?N 对应字符串为'PN', 'PYN', 'PYTH','PYTHN'.'PYTHON'
PY[TH]ON 'PYTON','PYHON'
^[A-Za-z]+$ 由26个字母组成的字符串
^[A-Za-z0-9]+$ 由26个字母和数字组成的字符串
^-?\d+$ 整数形式的字符
^[0-9]*[1-9][0-9]*$ 正整数形式的字符串
可见正则表达式确实能够简洁地表示出任意的字符串,但这些语法组成的正则表达式仅仅是一些字符串,如果想让程序能够识别,则需要引入re库来对这些字符进行编译,编译后的类型才是真正的正则表达式。