正则表达式使用可能是值对的一部分的定界符解析多个键对值

regexp parse multiple key pair values with delimiter that might be part of the value pair

我无法从字符串中获取每个密钥对值 的组。 输入字符串类似于:

sample1= "key1.1=val1,key2=2,key3=3,key4=last"

预期 4 组: key1.1=val1 key2=2 key3=3 key4=last

也可以

sample2= "key1.1=val11,key2.1=2,1,key33=3,key44=last"

请注意,在 sample2 中,key2.1 的值为 2,1

预期 4 组:key1.1=val11 key2.1=2,1 key33=3 key44=last

我无法获取所有组,特别是处理对之间的分隔符,也可以是一个键值的一部分的情况。

我正在尝试类似的方法: (?:^|,)([^=,]+)=([^=,]+)(?:,|$)

您可以在逗号后跟一个或多个逗号以外的字符后跟一个等号进行拆分。也就是说,拆分正则表达式

的匹配项
,(?=[^,]+=)

Demo


用于拆分匹配此表达式的字符串的方法或函数取决于您使用的语言,您尚未指定。例如,在 Ruby 中,您可以写

"key1.1=val11,key2.1=2,1,key33=3,key44=last".split(/,(?=[^,]+=)/)
  #=> ["key1.1=val11", "key2.1=2,1", "key33=3", "key44=last"]

表达式可以分解如下

,        # match a comma
(?=      # begin a positive lookahead
  [^,]+  # match one or more characters other than commas
  =      # match an equal sign
)        # end positive lookahead