比如一段文本
这是一段简单的富文本, ##这里是加粗##, **这里是斜体, **然后<u>这里是下滑线</u>, 最后##<u>我还可以任意的嵌套</u>##
这样的文本想解析成一个抽象结构, 比如
[
{
"text":"这是一段简单的富文本, "
},
{
"text":"这里是加粗",
"bold":true
},
{
"text":","
},
{
"text":"这里是斜体,",
"italic":true
},
{
"text":"然后"
},
{
"text":"这里是下滑线",
"underline":true
},
{
"text":",最后"
},
{
"text":"我还可以任意的嵌套",
"bold":true,
"underline":true
}
]
做到如上的解析, 应该怎么去实现. 我现在的做法是用
正则循环一遍, 初步得到一个数组, 但是数组里面可能会有这样的未解析完全的格式
{
text: "<u>我还可以任意的嵌套</u>",
bold: true
}
然后需要再不断的循环这个数组, 知道所有的结构是解析完全.
请问有更直接的方法吗?
写一个解析器,做 tokenizer,从第一个字符开始解析,正则不太行,会有很多问题。