【发布时间】:2014-01-16 08:09:48
【问题描述】:
我需要从另一个系统中拆分一个字符串,它代表一个序列化的对象。对象本身可以具有嵌套为属性的另一个相同类型的对象。我需要一种将字符串本质上序列化为字符串数组的方法。例如。
"{1,Dave,2}" 应该创建一个包含 3 个元素 "1", "Dave", "2" 的字符串数组。
"{1,{Cat,Yellow},2}" 应该变成一个包含 3 个元素 "1", "{Cat,Yellow}", "2" 的数组。
"{1,{Cat,{Blue,1}},2}" 应该变成一个包含 3 个元素 "1", "{Cat,{Blue,1}}", "2" 的数组。
基本上嵌套可能是 N 级深,所以可能,我可以有类似的东西 "{{Cat,{Blue,1}},{Dog,White}}" 和我的结果数组应该有 2 个元素:"{Cat,{Blue,1}}" 和 "{Dog,White}"
我想编写一个自定义解析器来手动解析字符串。但这似乎是 RegEx 旨在解决的问题,但是,我对 regex 不是很好,因此希望 RegEx 专业人士提供一些建议。
谢谢
【问题讨论】:
-
这对regular expression balancing groups来说是一项完美的任务
-
您必须为此使用正则表达式吗?
-
你也需要解析嵌套元素吗?
-
是的,也需要解析嵌套元素。但如果我能让第一级工作,我可以递归地应用相同的逻辑。
-
一般来说,正则表达式不被视为解析嵌套结构的合适工具。是的,可以使用 .NET 的一些扩展正则表达式功能,但通常首选解析算法。可以在这里找到一个可以适应您的问题的简单方法:stackoverflow.com/a/5477921/87698