perl03 Perl正则表达式(一)【P14-P19】

2021-07-19  本文已影响0人  医只蜗牛

书接上文:https://www.jianshu.com/p/10e4b701a946

【P14】Perl正则表达式(一)

image.png
image.png
image.png
image.png
image.png
image.png

【P15】Perl正则表达式的应用

image.png

Perl中的正则表达式
.—个正则表达式也称为一个模式


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.png
image.png
很多是通用的
image.png
image.png
image.png

加上e是个表达式,可以进行求值

模式转换

image.png
image.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.png
image.png
这里需要输入,后面会讲
image.png
最后面的\d*\d这里正则表达式的原则是会找到第一个并标注出来且只进行一次。3和4之间也可

.*是贪婪的,也就是,这里会讲test3target全部当成. * 因此最早能找到的就是图片中的地方

image.png
image.png
image.png
image.png
上一篇 下一篇

猜你喜欢

热点阅读