最短匹配
前言
拥有扎实正则表达式基础的读者,都知道正则表达式的匹配都有一个特点,那就是贪婪。
但是实际应用场景中,我们偶尔希望它不贪婪,因此,最短匹配就诞生了。
变量定义
X
: 左侧任意长度字符串Y
: 右侧任意长度字符串
向后最短匹配
- 需求描述: 以X开头,以Y结尾,中间不能有Y
- 参考写法:
(?:X)[\s\S]+?(?:Y)
参考样例
待匹配文本: aaxxbbxxbbxxbb
正则表达式: (?:aa)[\s\S]+?(?:bb)
匹配结果: aaxxbb
向前最短匹配
- 需求描述: 以X开头,以Y结尾,中间不能有X
- 参考写法:
(?:X)(?:(?!X)[\s\S])*(?:Y)
参考样例
待匹配文本: aaxxaaxxaaxxbb
正则表达式: (?:aa)(?:(?!aa)[\s\S])*(?:bb)
匹配结果: aaxxbb
题外话
正所谓,正确的答案不止一个,希望大家一键三连哦✧(≖ ◡ ≖✿)~。
如果可以的话,稍微打赏一点也没问题哒,原创文章真心不容易。