标题有些拗口,实际的应用场景是这样的:给出类似这样一个字符串“abc/def/def/df”,期望匹配其中的“abc/def/def”部分。
第一步的思路想到了匹配最后一个“/”及其后的内容,正则可以这样写:“/[^/]+$”,那么问题来了,怎么匹配剩下的部分呢?
首先想到了利用形如“[^abc]”的反义语法,但经过测试不好用。反思一下“^”后面跟的应该是字符而非正则表达式,只能想起他办法。幸运的是找到了这样一个 帖子(http://bbs.csdn.net/topics/390367204?page=1),给了我启发,在通过查找正则的文档和尝试,找到了解决的方法。先给出答案:“.+(?=/[^/]+$)”。引用一下文档:(?=exp)也叫零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp。答案可以理解为:“.+”自身出现的位置后面能匹配“/[^/]+$”,也就是“/[^/]+$”前的“.+”
启发:根据需要使用其他断言,可以灵活的做到匹配一个匹配格式之外的内容。
原文链接:https://www.f2er.com/regex/360792.html