個人在做一個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了
如果文章有幫助到您,請點個贊,您的反饋會讓我感到文章是有價值的