2017-02-09 86 views
0

我正在使用Go 1.7.4。有什麼方法可以驗證字符串是否遵循特定的模板。例如,下面是我的字符串(請忽略IF,那麼這些都被視爲字符串的一部分)複雜字符串格式驗證

IF NAME: A> B> C 
AND AS: 10796 
    OR DIVISION: X> Y> Z 
AND IP : 107.211.11.0/22 
    OR IP PREFIX: 66.144.0.0/16 
THEN 
    #1: PASS(60%), FAIL(40%) 
    #2: PASS(40%), FAIL(35%), DISTINCTION(25%) 

的元素將是相同的,但出現次數的數量可以是不同的。例如:A > B而不是A > B >C可能還有一個子句#3等等。 AND OR塊也可以重複。有什麼辦法可以有一個模板來驗證這個結構。我們可以將其轉換爲一些JSON模式嗎?

回答

2

您可以使用ebnf包去

EBNF是表達正式語言的語法代碼。 EBNF由終端符號和非終端生產規則 組成,這些終端符號是控制終端符號如何組合成合法序列的限制條件。終端符號的示例包括 字母數字字符,標點符號和空格字符。

這裏是包doc:ebnf

+0

使用這個,你知道任何示例代碼? – aaj

+1

go編譯器itslef:D,讓我爲你搜索 –

+0

https://github.com/golang/exp/blob/master/ebnf/ebnf_test.go –