正则表达式
后向引用,引用的仅仅是文本内容,而不是正则表达式! 也就是说,组中的内容一旦匹配成功,后向引用,引用的就是匹配成功后的内容,引用的是结果,而不是表达式。 因此,(d{1,3})(.1){3}这个表达式实际上匹配的是四个数都相同的IP地址,比如:123.123.123.123。
至此,读者已经掌握了传说中的后向引用,就这么简单。
接下来说说什么是断言。
所谓断言,就是指明某个字符串前边或者后边,将会出现满足某种规律的字符串。 就拿文章开篇的例子来说,我们想要的是xxx,它没有规律,但是它前边肯定会有<title>,后边肯定会有</title>,这就足够了。 想指定xxx前肯定会出现<title>,就用正后发断言,表达式:(?<=<title>).* 向指定xxx后边肯定会出现</title>,就用正先行断言,表达式:.*(?=</title>) 两个加在一起,就是(?<=<title>).*(?=</title>) 这样就能匹配到xxx。
相信读者看到这,已经蒙了,不用急,待小菜慢慢讲来。
其实掌握了规律,就很简单了,无论是先行还是后发,都是相对于xxx而言的,也就是相对于目标字符串而言。 假如目标字符串后边有条件,可以理解为目标字符串在前,就用先行断言,放在目标字符串之后。 假如目标字符串前边有条件,可以理解为目标字符串在后,就用后发断言,放在目标字符串之前。 假如指定满足某个条件,就是正。 假如指定不满足某个条件,就是负。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |