【发布时间】:2016-02-15 03:24:24
【问题描述】:
假设我有以下字符串:
- “这个 [color=RGB] 是 [\color] 一个字符串。”
- “这个 [color=RGB][bold] 是 [\bold][\color] 另一个字符串。”
我正在寻找的是一种解析字符串以提取标签信息然后重建没有标签的原始字符串的好方法。 文本渲染时会用到标签信息。
显然我可以通过直接使用字符串(find/substr/replace 等)来实现目标,但我想问是否有另一种更简洁的方法,例如使用正则表达式。
注意:
- 我需要的标签很少,但可以嵌套它们(仅不同类型)。
- 无法使用 Boost。
【问题讨论】:
-
“无法使用 Boost。”那么,如何使用 flex & bison 呢? (抱歉,我不确定是否可以使用这些工具进行存档。)
-
这类似于 HTML - 你可以让你的生活更轻松,并切换到 HTML(或另一种支持良好的标记语言)。然后,您可以使用现有库进行解析/渲染/...
-
不要使用正则表达式。嵌套标签在正则表达式中并不有趣。此外,您可能想阅读有关此的答案:stackoverflow.com/questions/8577060/…
-
您可能想提及标签格式是否遵循标准,例如 BBCode 或类似的。可能有专用的解析库,它们比使用正则表达式解析更容易使用、更快且更不容易出错。
-
标签不匹配怎么办?例如
"This is[\color] a string."或"This [color=RGB]is a string."?