首页 > 其他 > 详细

如果我来设计一个简单标签

时间:2020-06-17 19:29:33      阅读:46      评论:0      收藏:0      [点我收藏+]

个人在做一个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了

如果我来设计一个简单标签

原文:https://www.cnblogs.com/ElEGenT/p/13153965.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!