如何用Regex匹配字符串中带_const后缀的可变字符部分?
正则匹配问题修复
你的问题核心是贪婪匹配导致的范围过度抓取:原正则里的.+会尽可能匹配所有字符,直到找到最后一个_const,所以才会从字符串开头一直匹配到目标位置。
解决方法
方案1:直接匹配目标字母段(推荐)
使用正则:[a-zA-Z]+(?=_const)
[a-zA-Z]+:匹配1个及以上连续大小写字母,精准对应你要的varstring这类可变字母部分(?=_const):正向预断言,仅匹配后面紧跟_const的字母序列,不会将_const纳入匹配结果
方案2:通过捕获组提取
如果需要先匹配完整的xxx_const再提取前缀,用正则:([a-zA-Z]+)_const
- 匹配结果里的第1个捕获组(即括号内的内容)就是你要的
varstring
测试效果
用你的示例字符串:
"This is the string and I want to match varstring_const with regex."
- 原正则
[a-zA-Z].+_const会匹配:This is the string and I want to match varstring_const(贪婪匹配导致范围过大) - 方案1的正则会精准匹配:
varstring
内容的提问来源于stack exchange,提问作者superthorsten
相关产品推荐
相关产品推荐

