如果我来设计一个简单标签
个人在做一个tts(文本转语音)翻译功能。对于不同的语音语义通过标签标识。
例如:
- 停顿 <break>
- 多音字 <pinyin>
- 断句 <segment> <phone>,<muney> 等
目前在对接不同的平台,不同平台的使用大同小异。使用来说,必须得统一,所以得有一套自己的标准规则。
解析规则
现有的模板引擎没有能满足需求的,因为想标签尽可能的简单。
先想想其他办法。实在不行再上xml
标签格式
公司内部关于变量定义,基本都是以%
开头的,考虑用百分号做标签的话,会跟文本内容冲突的场景,考虑后,决定还是用尖括号<>来定义标签。
标签内容
<tag>内容</tag>
标准的标签格式应该是这个样子。但局限于产品设计,用户的输入文本数量有限,应该尽量精简标签。
考虑后,精简后大概是这个样子<tag:内容/>
正则匹配:
/<tag:(?<content>.*?)/>/
直接取content
内容就是文本内容了。
标签属性
标签定义比较好办,属性定义再什么格式呢?
思考了几种格式
/<tag:a=b::c=d:内容\/
模板识别上不好办,发现正则不好写,双冒号和单冒号不好区分
/<tag:a=b;c=d:内容\/>/
这样看着好像可以了
正则
一条正则全提出来不现实。还是得区分一下。
标签的正则
/<tag(?<props>:.*?):(?<content>.*?)\/>/
标签属性的正则
/(.*?)=(.*?)[;:]/
标签内容的正则
问题
-
简单解析足够了, 就是文本的其他内容里不能有
:(冒号)
,;(分号)
,业务上找些偏僻的字符 -
模板标签文本业务上是个高频操作,正则的效率要低一些,量大肯定要优化
-
不满足需求的情况下, 再只能上xml了 , 如果有后续扩展需求的话, 最好就是上xml了
如果文章有帮助到您,请点个赞,您的反馈会让我感到文章是有价值的