perl学习笔记之(一)

第一次在记笔记,就当做自己的学习笔记

最近在学习perl语言正则表达式章,几个感觉大彻大悟的问题在这里记录下省得自己忘记了

1、前瞻(?=pattern ?!pattern)和后顾(?<=pattern ?

之前一直觉得前瞻和后顾很抽象,如何前瞻,如何后顾?

(一)举个前瞻栗子(骆驼书上的栗子):$string="Paris in the the the spring"删除字符串内的重复字符

s/\b (\w+) \s (?=\1 \b)//gxi;

解析该正则表达式:1、\b匹配单词边界移动到the前沿;

                                    2、(\w+)匹配单词字符直到遇到空格,在这就匹配第一个the;

                                    3、\s匹配第一个the后的空格,关键来了(严肃脸)?=前瞻操作符不听话偷偷瞄一眼我们匹配到的\s(the后的空格)后是什么玩意儿,结果看到了一个the,好发现它和第一个捕获组(\w+)捕获的一样,匹配成功。

                                    4、把pattern中匹配到的字符替换成空字符。

负前瞻的栗子自己想很简单

(二)举个后顾的栗子:$string="love u baby"我只想匹配u前面是love的情况怎么写正则表达式?

/(?<=love) \s u .*/            正则表达式匹配到空格后回头看一眼是不是love,是的话继续匹配下去,不是的话向前移动。


2017年2月15日

你可能感兴趣的:(perl学习笔记之(一))