<分区>
我有一个遗留应用程序,它以一种特殊的格式将数据存储在数据库中
例如我有以下字符串
a:4:{i:0;s:4:"a’";i:1;s:6:"abcdef";i:2;s:5:"abcde";i:3;s:3:"xyz";}
表示以下四个单独的字符串:
- 一个’
- abcdef
- 开始
- 某某
粗略一看,s 后面的参数是对应字符串的长度。然而,这不是第一个字符串的情况,其中 s 之后的预期参数应该是 2 而不是 4。
截至目前,我正在通过以下方法解析此字符串:
首先通过正则表达式获取 i:0;s:4:"a'";i:1;s:6:"abcdef";i:2;s:5:"abcde";i:3 ;s:3:"xyz";
然后通过正则表达式 ^i:\d+;s:(\d+):"(.+)$
得到 len = 4
和 a'";i:1;s:6:"abcdef";i:2;s:5:"abcde";i:3;s:3:"xyz";
通过取前 4 个字符获得第一个选项(这在这里不起作用,因为 len
应该是 2),然后得到 i:1;s:6:"abcdef";i:2;s:5:"abcde"; i:3;s:3:"xyz";
并进一步迭代。
我最初也曾尝试通过正则表达式 i:\d*;s:\d*:"([^;]*)";
一次解析所有内容,但这行不通如果字符串包含这个模式(s 之后的参数应该是执行此操作的明确方法)。
我还检查了如果字符串是 a’Δ
则参数变为 6。
您建议我如何处理此类字符串(带有特殊字符),您能告诉我这种格式是什么以及如何解析它吗?
PS:我用的是java