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


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


    如果文章有帮助到您,请点个赞,您的反馈会让我感到文章是有价值的

  • 相关阅读:
    mysql优化---订单查询优化(1):视图优化+索引创建
    docker系列(一):docker基础与安装笔记
    Linux进程管理
    scrapy-redis源码解读之发送POST请求
    anaconda虚拟环境管理,从此Python版本不用愁
    Ubuntu18.04安装mongodb
    Python开发之日志记录模块:logging
    Git学习笔记:基础篇
    python开发之虚拟环境管理:virtualenv、virtualenvwrapper、pycharm
    Python开发之序列化与反序列化:pickle、json模块使用详解
  • 原文地址:https://www.cnblogs.com/ElEGenT/p/13153965.html
Copyright © 2020-2023  润新知