正则表达式再文本处理里面非常重要,程序员处理最多的就是字符串,列表是容器,容器里面放的还是字符串 ,数字也就是加减乘除,移位计算,位与
爬虫也用到了正则表达式技术
regular expression 缩写 regex,
可以对字符串按照某种规则进行检索,替换 ,再字符串里检索你需要的内容
1970 将正则表达式引入到了grep,ed
大多数文本编辑器都支持正则表达式
1980,再安装httpd库的时候,有个库要安装就是PCRE,叫peal语言兼容的正则表达式
大多数高级语言比如java,都是PCRE
扩展正则表达式有可能还不够好用,就可以用PCRE,python很早就支持正则表达式了,变成标准库了,re模块
https://www.w3cschool.cn/regex_rmjc/
30分钟学会正则表达式
要使用大量的练习来使用
实际我们使用的是PCRE这个流派
命令用扩展正则表达式
一般编程用PCRE
基本语法就需要认识元字符
点匹配换行符之外的任意一个字符
集合里有这么多字符,可以匹配abc中任何一个字符,中括号里是能够使用的,匹配其中一个字符
^秃子符,表示取反,除abc外的
依次可以简写,a-z包含英文所有小写字母,但是中括号内只匹配一个字符,元字符不管多个
除了小写字母的任意一个字符
\bb后面的b就代表b只是这个单词用b开头
这个小写改成大写,就代表否定
t\B 代表t不能是单词的结尾
\Bb 代表不能以b开头
代表digit数字 =[0-9],只能匹配一位
除了数字的任意一位
代表space,空白,\f\r\n\t\v,[ \f\r\n\t\v]第一个是空格,\f分页,\r\n回车换行符 \ttab键,\v制表符
大写代表非空白字符
匹配正好是标识符范围,支持中文字符
大写取反,基本上就剩空白字符了
这个3个软件用的库不一样,用的是C++,有点是.NET
没用元字符也是正则表达式
只匹配一个字符,然后在下一个继续找
在windows下处理文件的换行符是回车换行符
这就是点.的匹配,.只能匹配一位。这里面的红色代表匹配上的,每次只匹配一个字符
[]中括号是个集合,但是一次只能匹配字符中的一个
全局匹配还是向后找的
还有几个常见的,\w,下划线也进来了
\w在外面这里是支持中文的,中文每个字也算一个word
.点号不匹配,符号除了下划线都不匹配中文的句号就不包含
\W就是取反,在行尾有可能是回车换行\r\n,在有些匹配的时候,有可能把\r\n都匹配上
小s匹配空白字符
大s取反,每一次也只匹配一个
\b单词的词首词尾,就找到a一个
h结尾,对于中文就不能这么断字断词
每次只匹配一位数字
匹配非数字,包括空白什么都在内
找连续三个数字
连续4个数字就没有
取两个数字,字符串处理不回头、
12取到了,不会23
星号描述的前面一个字符出现任意次
有没有b都可以
有b没b都可以,所以就匹配到a了
+加号代表至少一个这样的字符
b至少得出现一回,这种就是贪婪的,尽量去取最长度能匹配到的数字
c之前找到至少一个b
0或1
c之前的b可以有也可以没有
空白字符不属于\w
*这里跟模式有关,.应该到换行符就停止了,主要是这里的模式
single line代表不管多少行,都看做一行
使用.点的时候就需要特别注意
n代表重复几次 e\w{1}明确告诉你后面字符必须出现1次
{1,}不就代表+
0,1就代表?问号
大括号在明确知道上下限的时候使用