RegEx排除引号之间的匹配

时间:2013-09-06 12:16:52

标签: regex nsregularexpression

我正在尝试在RegEx中排除引号内的匹配项。这个字符串是我的主题:

ONEKEY=VAL1, TWOKEY=VAL2, THREEKEY="VAL3.1, VAL3.2", FOURKEY=VAL4

我想拆分此字符串(在Mac OS中使用NSRegularExpression)并获取关联数组。为了更容易,我首先想要将字符串拆分为KEY=VALUE对,并且可以通过=轻松地将它们分解,或者在我的迭代中使用另一个RegEx。我现在的问题是我不能排除引用值的工作。这是我的RegEx:

(?=(.))([^,\s]*)

我已尝试过类似的内容:(?=(.))([^"])?([^,\s]*)([^"])?(?=([^"]?.[^"]?))([^,\s]*)

1 个答案:

答案 0 :(得分:2)

如何找到:

([^=]+)=("[^"]*"|[^,]+)(?:,\s*)?

然后提取组1(密钥)和2(值(s))。

[^=]+ - 一个或多个不是=的字符 "[^"]*" - 引号之间的任何字符 [^,]+ - 一个或多个不是,的字符 (?:,\s*)? - 使用,之后的任何空格((...)(?:...)之间的唯一区别是后者不为其分配组)。

如果可以嵌套括号,这将不起作用。

Test