我有一个简单的正则表达式,例如_(([a-zA-Z]|_)*)
,可以匹配下划线之后的任何单词,例如_price_range * _qty_val
,这是我正在寻找的price_range, qty_val
字样,但由于奇怪的错误,三个匹配组,最后一个是匹配词的最后一个词,在我的情况下为e
和l
。有人可以解释或让我在这里做错什么吗?我不要最后一个匹配的组。
答案 0 :(得分:1)
意外捕获组是组2,即内括号([a-zA-Z]|_)
。
一个简单的解决方法是使该组不被捕获:
_((?:[a-zA-Z]|_)*)
[a-zA-Z]|_
可以简化为[a-zA-Z_]
,因此您的正则表达式可以是这样:
_([a-zA-Z_]*)
答案 1 :(得分:0)
尝试一下(example here)
_[^ *]* or grouped _([^ *]*)
let s = "_price_range * _qty_val"
let r = s.match(/_[^ *]*/g).slice(0).map(x=>x.substr(1));
console.log(r);