我正在尝试在RegEx中排除引号内的匹配项。这个字符串是我的主题:
ONEKEY=VAL1, TWOKEY=VAL2, THREEKEY="VAL3.1, VAL3.2", FOURKEY=VAL4
我想拆分此字符串(在Mac OS中使用NSRegularExpression
)并获取关联数组。为了更容易,我首先想要将字符串拆分为KEY=VALUE
对,并且可以通过=
轻松地将它们分解,或者在我的迭代中使用另一个RegEx。我现在的问题是我不能排除引用值的工作。这是我的RegEx:
(?=(.))([^,\s]*)
我已尝试过类似的内容:(?=(.))([^"])?([^,\s]*)([^"])?
和(?=([^"]?.[^"]?))([^,\s]*)
答案 0 :(得分:2)
如何找到:
([^=]+)=("[^"]*"|[^,]+)(?:,\s*)?
然后提取组1(密钥)和2(值(s))。
[^=]+
- 一个或多个不是=
的字符
"[^"]*"
- 引号之间的任何字符
[^,]+
- 一个或多个不是,
的字符
(?:,\s*)?
- 使用,
之后的任何空格((...)
和(?:...)
之间的唯一区别是后者不为其分配组)。
如果可以嵌套括号,这将不起作用。