2017-02-09 66 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 –