Node.js&;正则表达式-匹配“;作业“;串

Node.js&;正则表达式-匹配“;作业“;串,node.js,regex,Node.js,Regex,使用Node.js和正确的正则表达式,我需要匹配任何=,前面是任何不带空格的字符串,后面是任何可以包含空格的字符串 我有一个字符串,看起来像这样: key1=value1 key2=value2 key3=multiple values 它应该匹配key1=value1,key2=value2和key3=multiple value 我尝试过以下方法,但不起作用,因为我是一个RegEx新手: string.match(/.*=.+?(?=.*=)/g) 有什么帮助吗 谢谢。以下操作可以完成:

使用Node.js和正确的正则表达式,我需要匹配任何
=
,前面是任何不带空格的字符串,后面是任何可以包含空格的字符串

我有一个字符串,看起来像这样:

key1=value1 key2=value2 key3=multiple values
它应该匹配
key1=value1
key2=value2
key3=multiple value

我尝试过以下方法,但不起作用,因为我是一个RegEx新手:

string.match(/.*=.+?(?=.*=)/g)
有什么帮助吗


谢谢。

以下操作可以完成:
(\w+=(.*)(?:\w+=)|$)

const string='key1=value1key2=value2key3=multiple value';
常量正则表达式=/(\w+=(.*)(=(?:\w+=)|$)/g
让我们比赛;
while((match=regex.exec(string))){
常量[,键,值]=匹配;
log(`Key:${Key}-Value:${Value}`)

}
为了防止使用
*?
进行不必要的回溯,另一个选项是使用带有负前瞻的,断言下一个单词不包含等号

如果只需要匹配键值对,则可以使用:

[^ =]+=[^= ]+(?:(?! [^\s=]+=) [^= ]+)*
部分地

  • [^=]+=
    匹配除空格或
    =
    之外的任何字符的1+倍,然后匹配
    =
  • [^=]+
    匹配除空格或
    =
  • (?:
    非捕获组
    • (?!
      负前瞻,断言右边的不是
      • [^=]+=
        匹配一个空格,1+乘以除空格或
        =
        之外的任何字符,然后匹配
        =
    • 关闭前瞻
    • [^=]+
      如果断言成功,则匹配一个空格和除空格或
      =
  • )*
    关闭非捕获组并重复0多次以匹配单个单词

const regex=/[^\s=]+=[^=\s]+(?:(?![^\s=]+=)[^=\s]+)*/g;
常量str=`key1=value1key2=value2key3=multiplevalues`;
console.log(str.match(regex))