You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

正则表达式无法匹配最后一组内容的技术求助

正则表达式捕获末尾值的修复方案

我用的正则表达式是这个:

(.*?)(>=|<=|~|!=|=|!~|>|<!| IS | IS NOT | WAS | WAS IN | WAS NOT | WAS NOT IN | CHANGED | OR | AND | IN | NOT IN )

测试文本如下:

project=blah AND blah=something OR issuetype!="blah" AND someissue IN somefunction("blah") OR blahing <= "something"

这表达式能匹配大部分内容,但最后那个"something"就是抓不到。我知道问题在哪——原表达式只会在遇到指定操作符时触发捕获,可最后这个值后面没操作符,到文本结尾就停了,所以没被匹配到。

直接给修改后的正则:

(.*?)(>=|<=|~|!=|=|!~|>|<!| IS | IS NOT | WAS | WAS IN | WAS NOT | WAS NOT IN | CHANGED | OR | AND | IN | NOT IN |$)

修改点说明

就在操作符列表最后加了|$,意思是把字符串结尾也当成一个匹配触发条件。这样遍历到文本末尾时,即使没有后续操作符,也会触发捕获,把最后这个值捞出来。另外原表达式的非贪婪匹配.*?保留着,不会出现过度匹配的问题。

内容的提问来源于stack exchange,提问作者binks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 14:05:54