我想定义一个解析器,它接受PetitParserDart中除['(', ')', '{', '}']
之外的任何字符。
我试过了:
char('(').not() & char(')').not() & char('{').not() & char('}')
我不确定它是否正确,是否有任何简单的方法可以做到这一点? (像chars('(){}').neg()
)?
答案 0 :(得分:3)
这匹配任何内容,但是在插入符^
之后列出的字符。它是所有字符的字符类,没有列出的字符:
pattern('^(){}');
这也有效(请注意最后一个字符的.not()
,以及实际使用该字符的any()
):
char('(').not() & char(')').not() & char('{').not() & char('}').not() & any()
这个也适用:
anyIn('(){}').neg()
相当于:
(anyIn('(){}').not() & any()).pick(1)
另一种选择是:
(char('(') | char(')') | char('{') | char('}')).neg()
除了第二个例子,所有示例都返回解析后的字符(这可以很容易修复,但我想保持接近你的问题)。第一个例子可能是最容易理解的,但根据上下文,您可能更喜欢其中一种选择。