尝试使用RegEx
拆分以下字符串:
"C=US,ST=NY,O=GOOGLE\, INC"
目的是让O=GOOGLE\, INC
在逗号分割后保持不变。
答案 0 :(得分:1)
如果你可以不分割,你可以使用这样的正则表达式捕获字段数据 编辑 - 修改以匹配虚假逃脱。
# /(?:^|,)((?:[^,\\]*(?:\\,|\\)?)+)(?:(?=,)|$)/
(?: ^ | , ) # Leading comma or BOL
( # (1 start), Field data
(?:
[^,\\]*
(?: \\, | \\ )?
)+
) # (1 end)
(?: # Lookahead, comma or EOL
(?= , )
| $
)
输出>>
** Grp 0 - ( pos 0 , len 4 )
C=US
** Grp 1 - ( pos 0 , len 4 )
C=US
--------------
** Grp 0 - ( pos 4 , len 6 )
,ST=NY
** Grp 1 - ( pos 5 , len 5 )
ST=NY
--------------
** Grp 0 - ( pos 10 , len 15 )
,O=GOOGLE\, INC
** Grp 1 - ( pos 11 , len 14 )
O=GOOGLE\, INC
答案 1 :(得分:0)
您的数据看起来非常可靠:
富=巴,穗=跨度,A =摆锤\,fred的
即key = val数据对,数据中有转义的逗号。因此,如果转义的逗号在数据中仅 ,那么您可以使用简单的先行为' key ='作为你的正则表达式的一部分。假设密钥总是在大写字母中,那么这可以工作:
s = "C=US,ST=NY,O=GOOGLE\, INC"
s.split(/,(?=[A-Z]*=)/)
即,如果后跟一些大写字母和等号,则用逗号分隔。
这会给你
["C=US", "ST=NY", "O=GOOGLE, INC"]