正则学习

Posted fnncat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则学习相关的知识,希望对你有一定的参考价值。

未知的圣神,

熟悉的轻凌;

拿起了图灵系列的正则,心里瑟瑟发抖,比我大犀牛还重;

对于正则,一直在使用,从来没有认真的去整理过,满满的敬畏,看了两天意识到确实是有点高估难度;


正则:

抛网址 :https://regexper.com/   觉得有这个正则学习就够了、理解正则的各种规则给出了形象的图示;

 

熟练使用正则:

1,记忆规则:

元字符
1 .  匹配除了换行符之外的任何单个字符
2 \ 在非特殊字符之前的反斜杠表示下一个字符是特殊的,不能从字面上解释。例如,没有前\的‘b‘通常匹配小写‘b‘,无论它们出现在哪里。如果加了‘\‘,这个字符变成了一个特殊意义的字符,反斜杠也可以将其后的特殊字符,转义为字面量。例如,模式 /a*/代表会匹配 0 个或者多个 a。相反,模式 /a\*/ 将 ‘*‘ 的特殊性移除,从而可以匹配像 "a*" 这样的字符串。
3 | 逻辑或操作符
4 [] 定义一个字符集合,匹配字符集合中的一个字符,在字符集合里面像 .\这些字符都表示其本身
5 [^] 对上面一个集合取非
6 - 定义一个区间,例如[A-Z],其首尾字符在 ASCII 字符集里面

 

数量元字符
1 {m,n} 匹配前面一个字符至少 m 次至多 n 次重复,还有{m}表示匹配 m 次,{m,}表示至少 m 次
2 + 匹配前面一个表达式一次或者多次,相当于 {1,},记忆方式追加(+),起码得有一次
3 *  匹配前面一个表达式零次或者多次,相当于 {0,},记忆方式乘法(*),可以一次都没有
4 ?  单独使用匹配前面一个表达式零次或者一次,相当于 {0,1},记忆方式,有吗?,有(1)或者没有(1),如果跟在任何量词*,+,?,{}后面的时候将会使量词变为非贪婪模式(尽量匹配少的字符),默认是使用贪婪模式。比如对 "123abc" 应用 /\d+/将会返回 "123",如果使用 /\d+?/,那么就只会匹配到 "1"。

 

位置元字符
1 ^ 单独使用匹配表达式的开始
2 \$  匹配表达式的结束
3 \b 匹配单词边界
4 \B 匹配非单词边界
5 (?=p) 匹配 p 前面的位置
6 (?!p) 匹配不是 p 前面的位置
特殊元字符
1 \d [0-9],表示一位数字,记忆方式 digit
2 \D [^0-9],表示一位非数字
3 \s [\t\v\n\r\f],表示空白符,包括空格,水平制表符(\t),垂直制表符(\v),换行符(\n),回车符(\r),换页符(\f),记忆方式 space character
4 \S [^\t\v\n\r\f],表示非空白符
5 \w [0-9a-zA-Z],表示数字大小写字母和下划线,记忆方式 word
6 \W [^0-9a-zA-Z],表示非单词字符

 

 

 

 

 

     

以上是关于正则学习的主要内容,如果未能解决你的问题,请参考以下文章

python基础学习(十三)

python基础学习笔记(十三)

text 正则表达式片段

markdown 正则表达式模式片段

正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性

第43天python学习re模块学习