正则表达式(re)
1. 什么是正则则表达式?
正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本(
具体详细内容,小云就不废话了。)
2. 正则的作用?
他的作用很多,小云作为一个爬虫小菜鸟,特别喜欢用他来采一些xpath很难弄到的数据,通过和一些后端大佬和前端大佬的交流,他们一般来规定客户的手机号,身份证,邮箱以及自定义一些规则让客户更好的查到自己所需的内容。等等,具体还有什么作用,小云还是大佬们去度娘一下下0.0。
3. 废话少说,上正则元字符(特殊字符)
字符 | 解释 |
---|---|
\ | 转义字符,将后边紧跟着的字符变成特殊字符,或将后边的特殊字符变成普通字符 如:在正则表达式中,"\n"换行符,"\\"则代表一个普通字符"\" |
^ | 匹配第一行行首,匹配多行需要传参 flags=re.MULTILINE |
$ | 匹配最后一行行尾,匹配多行需要传参 flags=re.MULTILINE |
. | 除"\r""\n"外,匹配任意的单个字符,要使"."匹配换行符,flags=re.DOTALL |
| | 或,如 "aaa|bbb|ccc",表示"aaa","bbb","ccc"三选一 |
? | 匹配前边的子表达式0次或1次,等价于{0,1} |
+ | 匹配前边的子表达式1次或多次,等价于{1,} |
* | 匹配前边的子表达式0次或多次,,等价于{0,} |
{} | {n}匹配前边的子表达式n次,{n,}匹配前边的子表达式至少n次 即:>= n,{n,m}匹配前边的子表达式n~m次,即:n<= 表达式 <=m |
() | 分组,从1开始,从左至右数"("为第几组,下标0为全部分组 |
[] | 字符集匹配[]中的人一个字符,之匹配一次,如[abc]:表示"a","b","c"三选一。也可以给定范围(必须是连续的才行),如[a-z]:表示a到z任意一个字符。 |
4. 正则元方法(匹配单个字符)
字符 | 解释 |
---|---|
\d | 匹配数字: [0-9] |
\D | 匹配非数字:[^\d] |
\s | 匹配所有空格 |
\S | 匹配所有的非空格:[^\s] |
\f | 匹配一个换页符 |
\n | 匹配一个换行符 |
\r | 匹配一个回车:Enter |
\t | 匹配一个制表符 |
\v | 匹配一个垂直制表符 |
\p | 匹配 CR/LF(等同于 \r\n),用来匹配 DOS 行终止符 |
5. 正则的模式修饰符
简写 | 解释 |
---|---|
g | 查找所有可能的匹配,返回的结果可以是多个。如果不加/g最多只会匹配一个,也可以指定匹配 eg:text="你很聪明" ,我只想要“你” “聪明” 就可以这样:text="(.*?)很(.*?)"用text="\g<1>很\g<2>" 注意:由于匹配的全部文章,必须有几个(.*?)就匹配几个\g<>,里面的数字代表第几个 |
i | 表示匹配的时候不区分大小写,这个跟其它语言的正则用法相同 |
m | 表示多行匹配。什么是多行匹配呢?就是匹配换行符两端的潜在匹配。影响正则中的^$符号 |