正则表达式迅速入门(未排版)

孤独是人的宿命,爱和友谊不能把它根除,但可以将它抚慰,人们往往是在孤独中成长,学会与孤独做伴,学会独处!直到它来抚慰你那孤独的心!

本文可以让你在1小时内掌握正则表达式的基础!不要问为什么,因为我这个辣鸡就用了一小时!(虽说很无聊吧)

\d #匹配数字0-9
\b #开始和结尾
任意数量,任意字符(不包括换行符),任意数量的字符
0\d\d-\d\d\d\d\d\d\d\d
重复的可以使用{}包裹
0\d{2}-\d{8}
\s #匹配任意空白符
\w #匹配字母数字或下划线或汉字
\ba\w\b #匹配以a开头然后任意个数字母或汉字最后到单词结束 
\d+ #匹配一个或更多连续数字 
+ #类似于但是 + 从1开始而可以是0次
\b\w{6}\b #匹配六个字符的单词 
^ #匹配字符串的开始
$ #匹配字符串的结束 
^\d{5,10}$ #匹配5-10的数字 为了查找元字符我们使用 \ 来取消他们的特殊意思 如需要查找就需要输入 *

总结下重复的语法:

* #重复任意次数
+ #重复1到任意次数
? #重复0或1次
{n} #重复n次
{n,} #重复最少n次
{n,m} #重复n到m次
[abcd] #在 [] 中选择匹配
(?0\d{2}[) -]?\d{8}
#转义匹配(零或一次 然后匹配0之后两个数字然后在)空格-中选择匹配0或1次然后匹配8个数字

* 重复任意次数
+重复1到任意次数
?重复0或1次
{n}重复n次
{n,}重复最少n次
{n,m}重复n到m次
[abcd]在[]中选择匹配
(?0\d{2}[) -]?\d{8}
转义匹配(零或一次 然后匹配0之后两个数字然后在)空格-中选择匹配0或1次然后匹配8个数字

正则表达式中“分支条件”指有多种规则,如果满足其中一个就都当成匹配,具体是用|把他们隔开。
例子: 0\d{2}-\d{8}|0\d{3}-\d{7} 开头匹配一个0然后匹配两个数字匹配-然后匹配八个数字
或者
开头匹配一个0然后匹配三个数字匹配-然后匹配七个数字
使用的时候注意条件顺序 他会从左往右匹配 换言之如果左边的包含右边那么很可能造成歧义
例子:0\d{2}|0\d{3}-.*\b 这样子的话只会匹配0和后面两个数字 以及0到下一个换行符的前两位
所以应该注意顺序
如果想对多个语句进行重复我们这里用到()把想要重复的多个字符括起来,再加上个数{}
例如我们匹配我们的ip (\d{1,3}.){1,3}\d{1,3}
这里我们首先匹配1到3个数字外加.重复三次然后匹配1到3个数字
但是会出现999.999.999.999这种不存在的ip于是我们引出下面的
这里写出正确匹配ip的一个正则表达式((2[0-4]\d|25[0-5]|[01]?\d\d?).){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
具体意思你们可以写到评论区算是一个小测试吧
他的关键是在2[0-4]\d|25[0-5]|[01]?\d\d?这里
如果我们想要匹配出了数字以外的什么什么的话我们就需要用到反义了
\W 匹配任意不是字母数字下划线汉字的字符
\S 匹配不是空白的字符
\D 匹配不是数字的字符
\B 匹配不是单词开头或结束的位置
[^x]匹配除了x外的任意字符
[^apple]匹配除了apple外的任意字符
例如
]+>匹配用尖括号括起来的以a开头的字符串
我们可以把捕获的数据放到一个组里来供程序条用
(mum)匹配mum并存储到自动命名的组里
(?mum)匹配mum并储存到team组
也可以写成(?’team’mum)
(?:mum) 匹配mum但是不捕获mum也不会分配组好 剔除数据用的
比如验证码和密码输入到一起就可以用这个语法,当然没人会这样做吧
零宽断言
用来查找位置的语法
(?=ed)匹配ed前面的位置
(?<=ed)匹配ed后面的位置
(?!ed) 匹配后面不是ed的位置
(?<!ed)匹配前面不是ed的位置
(?#ed)就是个注释
\b\w+(?=ed\b) i loved you 这里的结果就是匹配lov
(?<=\s)\w+(?=\s) 连个空白符中间的文字

(?<=<(\w+)>).*(?=<\/\1>) 这个例子 在<>中的任意字母数字和中间的所有字符这的\1是前面的第一组也就是(\w+)

后面就被注释了

(?<= # 断言要匹配的文本的前缀 <(\w+)> # 查找尖括号括起来的内容
# (即HTML/XML标签)
) # 前缀结束
.* # 匹配任意文本
(?= # 断言要匹配的文本的后缀
<\/\1> # 查找尖括号括起来的内容
# 查找尖括号括起来的内容
) # 后缀结束

*? 重复任意次
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复

留下评论