4

我定义了一个规则:

def("invokation", char('@').word().plus().flatten());

对于“@who”,它将匹配并得到@who结果。

如何问它只是返回who没有@

4

1 回答 1

4

不确定您的问题是关于 PetitParser for Java还是Dart

在任何情况下,您都需要连接char('@')word().plus().flatten()一个序列。然后选择列表结果列表的第二个元素,忽略第一个字符。

在 Java 中,这看起来像这样:

def("invokation", character('@')
    .seq(word().plus().flatten())
    .map(Functions.nthOfList(1));

在 Dart 中是这样的:

def("invokation", char('@')
    .seq(word().plus().flatten())
    .pick(1));

顺便说一句,我刚刚对 PetitParser for Java 进行了改进,以便您也可以pick(int)在 Java 中使用。

于 2013-06-22T09:24:31.257 回答