书接上文:https://www.jianshu.com/p/10e4b701a946
【P14】Perl正则表达式(一)
image.pngimage.png
image.png
image.png
image.png
image.png
【P15】Perl正则表达式的应用
image.pngPerl中的正则表达式
.—个正则表达式也称为一个模式
image.png
下面一个
匹配,可加可不加引号。如果本身有引号的话,需要将反斜杠写在引号前面。
image.png
这里space不仅包括空格,还包括换行符等等
image.png
image.png
注意与不匹配区别,感觉像大小写的区别
image.png
image.png
前一个表示:Worddddddddd...;后一个表示WordWordWord......
image.png
image.png
image.png
image.png
image.png
第一个相当于:(World)\1等价于:WorldWorld 可print
第二个:相当于:WorldWorldWorld 不可print
第三个:(Hello) (World)\1\2 等价于:HelloWorldHelloWorldWorld【对应重复一次,两次】 因此可print
第四个:(Hello) (World)\2\1 等价于:HelloWorldHelloHelloWorld 不可print
第五个:(Hello) we love the (World)\2\2 等价于:Hello we love the World HelloHello WorldWorld 【中间插入不影响】 可print
第二个表示:匹配hello World或者Hello and World
image.png
image.png
第三个不匹配的原因是:中间没有空格
image.png
【16】Perl正则表达式和元字符
image.png第三句话举个例子:
是通配符,加上反斜杠就是代表本身含义,失去通配符的意义
image.png
image.png
image.png
不是用的很多
image.png
\b:在边界的地方
这里\Z和小z跟前面的不一样,因为这里是锚定字符
image.png
只能三个中的一个
image.png
image.png
image.png
【P17】Perl正则表达式(二)
image.png(1)Perl正则表达式的形式
模式匹配
比较自由,前后只需要一致的符号即可。m代表match,但前面不能有m的赋值image.png
image.png
image.png
意思:数字.数字
S1代表匹配第一个()对应的值,S2代表第二个()对应的值
$从1开始使用。
模式匹配不改变原来的值。么,模式匹配返回的值是0或者1
image.png
看g有无的影响
image.png
ba,la,ta:加上g后返回所有值
不加的话,模式匹配只能代表匹配上了
image.png
image.png
image.png
image.png
因为第一个中,有个换行符,只不过他写在哪里,没有真实换行罢了,因此不匹配
image.png
image.png
模式替换
image.pngimage.png
很多是通用的
image.png
image.png
image.png
加上e是个表达式,可以进行求值
模式转换
image.pngimage.png
image.png
模式替换是整个进行替换,而模式转换是单个进行转换
a变成d,b变成e,c变成f【模式转换】后面还有三个,一次替换,所以总共有6个转换了
如果前面比后面多怎么办?
如果前面比后面多,多出来的默认转换成最后一个
第二个意思是,1还是1,2还是2,但是转换后,可以知道有多少个数字
image.png
image.png
image.png
第一个后面没东西,那里是空格,都会替换成空格。
第一个:对非数字进行转化成空格
(2)Perl正则表达式的原则
前面内容已讲image.png
image.png
image.png
不能对数组进行模式替换
image.png
image.png
俩个都能匹配上,但只替换一次
image.png
image.png
image.png
这里$var1看成一个整体,也就是string1 string2 整体替换成了var2
image.png
第一个返回值0或者1;第二个Word1和Word2互换。
image.png
image.png
image.png
image.png
image.png
image.png
最后一个没有匹配到,也就是S1没有匹配到任何东西。S1也就指的是(?:....)里面的内容。没有匹配到任何东西,说明他没有被存储。
理解:indus后面是什么不知道,但有个限定,要么是try,要么是tries
image.png
image.png
image.png
首先匹配Windows,然后后面|里面的都可以。8没有匹配到。
匹配的值没有被存储下来。也就是,下一次匹配时候还是那些里面可以匹配。
image.png
image.png
image.png
image.png
image.png
image.png
也就是,这个地方Windows(?。。。。。)只对Windows进行替换等操作,括号内的内容不参与替换等。
就把括号当成是一个定语,不用管他
【19】综合实例
image.pngimage.png
这里需要输入,后面会讲
image.png
最后面的\d*\d这里正则表达式的原则是会找到第一个并标注出来且只进行一次。3和4之间也可
image.png.*是贪婪的,也就是,这里会讲test3target全部当成. * 因此最早能找到的就是图片中的地方
image.png
image.png
image.png
网友评论