使用正则表达式选择键和值,但不选择相等的值



Hava 像这样的字符串:

"let key1=value1; let key2=value2;"

我想使用正则表达式将键和值作为组选择,我尝试使用环顾四周。

/(w+)(?==)(w+);/g

但它对我不起作用,有什么建议吗?

以下正则表达式应该可以解决问题:(let (w+) ?= ?(w+);?)+. 每个let语句都将是匹配项,其中键将是组 2,值将是组 3。

(?==)表达式部分是一个前瞻,一个零宽度断言,它不消耗文本,但要求它出现在右侧。当您说(?==)(w+)您希望w+模式开始在=上匹配时。由于w=不匹配,您的正则表达式总是失败。

/(w+)=(w+);/g

JavaScript(借用自 如何在 JavaScript 正则表达式中访问匹配的组?(:

var myString = "let key1=value1; let key2=value2;";
var myRegexp = /(w+)=(w+);/g;
match = myRegexp.exec(myString);
while (match != null) {
console.log(match[1] + "," + match[2]);
match = myRegexp.exec(myString);
}

更具体地说,我们可以使用(w+) ?= ?(w+);?+

最新更新