1

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

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

我想拆分这个字符串(NSRegularExpression在 Mac OS 中使用)并获得一个关联数组。为了更容易,我首先想将字符串分成KEY=VALUE对,然后=在我的迭代中轻松地将它们分解或使用另一个 RegEx。我现在的问题是我无法排除引用值的工作。这是我的正则表达式:

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

我已经尝试过这样的事情:(?=(.))([^"])?([^,\s]*)([^"])?(?=([^"]?.[^"]?))([^,\s]*)

4

1 回答 1

2

怎么找:

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

然后提取组 1(键)和 2(值)。

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

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

测试

于 2013-09-06T12:35:53.567 回答