个人在做一个tts(文本转语音)翻译功能。对于不同的语音语义通过标签标识。
例如:
目前在对接不同的平台,不同平台的使用大同小异。使用来说,必须得统一,所以得有一套自己的标准规则。
现有的模板引擎没有能满足需求的,因为想标签尽可能的简单。
先想想其他办法。实在不行再上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