如果我來設計一個簡單標籤

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


如果文章有幫助到您,請點個贊,您的反饋會讓我感到文章是有價值的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章