正则表达式匹配:如何捕获目标组前最后一个模式而非第一个
精准捕获目标文本的正则解决方案
嘿,我懂你遇到的糟心事了——默认的贪婪匹配会让正则从第一个**就开始“乱吃”内容,直到找到YES后面的**,把前面一堆无关的内容也捎带进来了。咱们可以利用**作为分隔符的特点,加上YES的标记,写出精准匹配的正则:
推荐正则表达式
\*\*([^*]+YES)\*\*
为什么这个能生效?
\*\*:精准匹配目标文本前后的星号分隔符[^*]+:匹配除了星号之外的任意字符,这样就不会跨到下一个**块里,完美限定在单个**包裹的内容范围内YES:锚定我们要找的目标文本核心特征- 捕获组
():会把**之间包含YES的内容抓出来,也就是你要的I SAID YES
如果你习惯用非贪婪匹配的写法,这个方案也能达到同样效果:
\*\*(.*?YES)\*\*
.*?是非贪婪模式,会匹配尽可能少的字符直到遇到YES,碰到下一个**就立刻停止,同样不会跨块匹配。
用这两个正则去匹配你的目标字符串,就能精准拿到I SAID YES啦~
内容的提问来源于stack exchange,提问作者user3649739
相关产品推荐
相关产品推荐

