2

我想定义一个解析器,它接受除了PetitParserDart['(', ')', '{', '}']之外的任何字符的任何字符。

我试过了:

char('(').not() & char(')').not() & char('{').not() & char('}')

我不确定它是否正确,是否有任何简单的方法可以做到这一点?(类似chars('(){}').neg())?

4

1 回答 1

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()

除了第二个示例,所有示例都返回解析后的字符(这很容易解决,但我想与您的问题保持密切联系)。第一个示例可能是最容易理解的,但根据上下文,您可能更喜欢其中一种选择。

于 2013-07-01T19:13:47.033 回答