#####如果你对正则感兴趣,读完这篇文章,一定会有收获~_^
#简单来说 ###正则一般代指正则表达式 ###正则表达式是从"复杂数据"中抽取"有用数据"的公式
#写好正则表达式的两个要点:
##1.正确匹配字符数量(相关符号:*
,+
,?
,{}
) ##2.正确匹配字符种类(相关符号:除上面符号以外的其它符号^_~)
###相关符号
####.
代表"万能匹配";//可以匹配除了"\n"
(换行符)之外的任何单个字符
####?
代表"不要贪婪";//用在*
,+
,?
后面,表示匹配的越少越好 ####?
也代表"非〇即一";
####^
代表"除了你";//在中括号内,如[^_]
表示单个非下划线字符 ####^
也代表"匹配首位"; ####$
代表"匹配末位"; ####*
代表"〇至无穷"; //大于等于0的整数
####+
代表"一至无穷";//大于等于1的整数 ####|
代表"我们都一样";//|
表示"或"
####\d
代表"匹配数字";//0-9
####\D
代表"匹配非\d
" ####\w
代表"匹配字符";//0-9,A-Z,a-z,_
####\W
代表"匹配非\w
"
###几个括号 ####大括号{}
用来确定数量
re.match
表示正则模块里面的match函数(match函数默认从字符串首部开始匹配),\d
匹配单个数字{3}
代表匹配3个
###中括号[]
用来确定匹配字符的种类 ####第一种写法
re.match(r"[123]{1}根烟","1根烟")re.match(r"[123]{1}根烟","2根烟")re.match(r"[123]{1}根烟","3根烟")复制代码
中括号内的123可匹配单个1或2或3
####第二种写法
re.match(r"[1,2,3]{1}根烟","1根烟")re.match(r"[1,2,3]{1}根烟","2根烟")re.match(r"[1,2,3]{1}根烟","3根烟")复制代码
####小括号()
用来为表达式整体匹配后,"按需提取"(经常和函数group配合使用)
####如提取域名中的词组(以简书域名为例) re.match(r".*//.*?\.+(.*?)\.+[^\.]*","http://www.bilibili.com").group(1)
什么是贪婪匹配?
- 贪婪的总是尝试匹配尽可能多的字符;(大多编程语言的正则默认贪婪)
- 在
*
,?
,+
,{m,n}
后面加上?
即可使贪婪变成非贪婪.
#写在最后
- 正则表达式相当于编程的小九九,背的时候有点恶心,但用起来非常爽!
- 正则表达式,最早用于唯一标示复杂的神经网络,现可用于"唯一标示"某个字符串,也就是"唯一匹配"字符串
- 正则表达式使用了大量的特殊字符,这些特殊字符在不同的语境下还会有不同的含义,所以正则的表达式看起来有点像乱码(表象无序的乱码,底层极致的规范)