我定义了一个规则:
def("invokation", char('@').word().plus().flatten());
对于“@who”,它将匹配并得到@who
结果。
如何问它只是返回who
没有@
?
我定义了一个规则:
def("invokation", char('@').word().plus().flatten());
对于“@who”,它将匹配并得到@who
结果。
如何问它只是返回who
没有@
?
不确定您的问题是关于 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 中使用。