我正在使用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模式吗?
答案 0 :(得分:2)
您可以在go
中使用ebnf
包
EBNF是一种表达形式语言语法的代码。一个 EBNF由终端符号和非终端生成规则组成 这是限制终端符号如何的限制 合并成一个合法的序列。终端符号的示例包括 字母数字字符,标点符号和空格字符。
以下是包doc:ebnf