Go 复杂字符串格式验证

Go 复杂字符串格式验证,go,Go,我正在使用Go 1.7.4。是否有任何方法可以验证字符串以遵循特定模板。例如,这里是我的字符串(请忽略IF,然后将它们视为字符串的一部分) 元素相同,但出现的次数可能不同。例如:A>B而不是A>B>C,可能还有一个子句#3等等。AND或block也可能重复。有没有办法让我有一个模板来验证这个结构。我们可以将其转换为一些JSON模式吗?您可以在go中使用ebnf包 EBNF是一种表示形式语言语法的代码。一 EBNF由终端符号和非终端产生式规则组成 控制终端符号如何使用的限制有哪些 合并成一个合法的

我正在使用Go 1.7.4。是否有任何方法可以验证字符串以遵循特定模板。例如,这里是我的字符串(请忽略IF,然后将它们视为字符串的一部分)


元素相同,但出现的次数可能不同。例如:
A>B
而不是
A>B>C
,可能还有一个子句#3等等。AND或block也可能重复。有没有办法让我有一个模板来验证这个结构。我们可以将其转换为一些JSON模式吗?

您可以在go中使用
ebnf

EBNF是一种表示形式语言语法的代码。一 EBNF由终端符号和非终端产生式规则组成 控制终端符号如何使用的限制有哪些 合并成一个合法的序列。终端符号的示例包括 字母数字字符、标点符号和空白字符


这是软件包文档:

您可以在go中使用
ebnf
软件包

EBNF是一种表示形式语言语法的代码。一 EBNF由终端符号和非终端产生式规则组成 控制终端符号如何使用的限制有哪些 合并成一个合法的序列。终端符号的示例包括 字母数字字符、标点符号和空白字符


这是软件包文档:

go编译器的lef:D,lemme search for yout以下是“ebnf”的更好指南go编译器的lef:D,lemme search for yout以下是“ebnf”的更好指南
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%)