正则表达式
001
在网上是有在线正则表达式测试的工具的,如果真的是开始想学习使用正则表达式来删选字符串的话
建议现在网上多练习,结合着视频来看。。下面给出一个网址:https://tool.oschina.net/regex
002
下面说一下我对正则表达式和使用的原理理解:
正则表达式描述了一种字符串匹配的模式,实际上就是写出一串字符来和想要得到的字符串来相互配对,起重要说的就是配对的时候使用小括号括起来的内容直接被看成result.ground(1),也就是说你在匹配的过程中使用小括号把你想要提取的字符串括起来,之后你就可以直接在在下面进行一些操作了,然后就是直接直接利用。
匹配的规则使自己来写的,在里面的括号是会依次被看成是result.grounp(1),result.group(2)......一开始的话我是在学习写脚本的时候才看到正则表达式的,那时候通过一个爬虫来获取对应的一个网站上面的一张图片,首先是要获得图片的url,这个是可以直接在网页的源代码里找到的,所以通re库使用正则表达式来获取,相对来说是比较简单的,可见正则表达式的重要性。
003
首先是一些常用的库函数
re.match()从开头开始匹配,有两个参数中间使用逗号隔开,第一个参数是自己写的匹配规则,第二个参数是传进来的数据
re.search() 直接在字符串里面寻找,输出低一个合适的字符串(只输出一次),有三个参数,,最后一个一般是re.s(下面会说到的)
re.findall() 相对于上面那个函数来说的只是增加了输出全部符合规则的字符串
re.sub() 替换匹配到的字符串返回输入的字符串,,三个参数,第一个是规则,第二个参数是 要替换的子串, 第三个是传进来的数据(一般看的是上面要筛选的字符数据)
re.compile()将一个正则表达式串编译成正则对象,以便于复用该匹配模式连个参数 规则和模式。
004
贪婪匹配和非贪婪匹配
主要是字符 .* 的使用区别在贪婪模式下,也就是只有.*那么他就会尽可能匹配多的字符
. 匹配任意字符 换行符除外(在匹配规则的后面加上的参数加上re.s之后.就可以匹配任意的字符了)
* 表示匹配0个或多个表达式 ,
所以.*连起来就是匹配多个或者另个任意字符,(在后面的上了re.s )
因为它匹配的数目是不确定的,所以才会产生是不是贪婪的说法,在.*后面加上?的时候表示是非贪婪模式,尽量匹配少的字符(具体要结合前后的其他匹配字符规则来看) ?的意思就是匹配0个或者一由前面的正则表达式匹配的字符,非贪婪模式。
005
下面是常用的匹配的规则:
\w表示匹配字母和下划线
\W表示匹配非字母下换线
\d匹配任意数字 等价于【0~9】
\s匹配任意空字符(常见的是用来匹配空格)
^匹配字符串的开头
$匹配字符串的末尾
+匹配一个或者多个表达式
()匹配括号内的表达式,也表示一个组
a|b 表示匹配a或者b
这些就是常用的了,其他的话要在深入学习下去就会见到的,慢慢地一个一个记。
006
尽量使用泛匹配,尽量使用非贪婪匹配,有换行符使用re.s