正则表达式如何提取最后两个“-”间的字符串,避免T-shirt等含“-”词汇干扰?
可用正则表达式
你可以直接使用这个正则实现需求:
[^-]+(?=-[^-]*$)
匹配逻辑说明
核心思路是从字符串尾部倒推匹配规则,完全不需要关心前面有多少个带-的词汇(比如T-shirt),从根源避免前面的-干扰结果,各部分含义:
[^-]+:匹配一段不包含-的连续字符(?=-[^-]*$):正向预查,要求上面匹配到的字符后面必须跟着1个-,且这个-之后到字符串结尾的所有内容都不能再包含-
测试效果
- 测试字符串
T-shirt Layla gaga-papa-lk:匹配结果为papa,符合预期 - 测试字符串
Gh world papa -mama-p:匹配结果为mama,兼容你之前的正常场景
内容的提问来源于stack exchange,提问作者Justaskingaq
相关产品推荐
相关产品推荐

