书接上文:https://www.jianshu.com/p/10e4b701a946
【P14】Perl正则表达式(一)






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

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


匹配,可加可不加引号。如果本身有引号的话,需要将反斜杠写在引号前面。













第一个相当于:(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



第三个不匹配的原因是:中间没有空格

【16】Perl正则表达式和元字符

第三句话举个例子:
是通配符,加上反斜杠就是代表本身含义,失去通配符的意义





\b:在边界的地方






【P17】Perl正则表达式(二)

(1)Perl正则表达式的形式
模式匹配




意思:数字.数字
S1代表匹配第一个()对应的值,S2代表第二个()对应的值
$从1开始使用。
模式匹配不改变原来的值。么,模式匹配返回的值是0或者1



ba,la,ta:加上g后返回所有值
不加的话,模式匹配只能代表匹配上了




因为第一个中,有个换行符,只不过他写在哪里,没有真实换行罢了,因此不匹配


模式替换






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



模式替换是整个进行替换,而模式转换是单个进行转换
a变成d,b变成e,c变成f【模式转换】后面还有三个,一次替换,所以总共有6个转换了
如果前面比后面多怎么办?
如果前面比后面多,多出来的默认转换成最后一个




第一个后面没东西,那里是空格,都会替换成空格。
第一个:对非数字进行转化成空格
(2)Perl正则表达式的原则




不能对数组进行模式替换






这里$var1看成一个整体,也就是string1 string2 整体替换成了var2

第一个返回值0或者1;第二个Word1和Word2互换。






最后一个没有匹配到,也就是S1没有匹配到任何东西。S1也就指的是(?:....)里面的内容。没有匹配到任何东西,说明他没有被存储。
理解:indus后面是什么不知道,但有个限定,要么是try,要么是tries



首先匹配Windows,然后后面|里面的都可以。8没有匹配到。
匹配的值没有被存储下来。也就是,下一次匹配时候还是那些里面可以匹配。






也就是,这个地方Windows(?。。。。。)只对Windows进行替换等操作,括号内的内容不参与替换等。
就把括号当成是一个定语,不用管他
【19】综合实例





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




网友评论