我试图编写一个标识所有逗号的正则表达式,但有一些例外:
使用¤
将其替换为某些特殊字符(例如gsub
)。
所以对于这个例子:
something=somethingElse, someThird="this is, a message with a comma!", someFourth=[ this, is, some, list ]
我想要以下结果:
something=somethingElse¤ someThird="this is, a message with a comma!"¤ someFourth=[ this, is, some, list ]
我找到了一些标识这些逗号的正则表达式(如下面的答案中所示),但似乎都不适用于gsub(它们替换太多或根本没有...)
答案 0 :(得分:2)
只要引号和括号是平衡的并且没有转义的实例,就可以使用此正则表达式进行前瞻:
/,(?=(([^"]*"){2})*[^"]*$)(?![^\[]*\])/g
更新:以下是红宝石代码:
str = 'something=somethingElse, someThird="this is, a message with a comma!", someFourth=[ this, is, some, list ]';
print str.split(/\s*,(?=(?:(?:[^"]*"){2})*[^"]*$)(?![^\[]*\])\s*/);
<强>输出:强>
["something=somethingElse", "someThird=\"this is, a message with a comma!\"", "someFourth=[ this, is, some, list ]"]