我正在尝试解析一个字符串,其中包含散布着星星的文本:
var input = "*This is the first part*This is the second part";
我想提取星之间的任何文本和最后一个星之后的文本。该字符串不以星号或换行符结尾。
我用 Sprache 编写了一个解析器来尝试实现这一点:
Parser<string> thingAfterStarParser = (
from open in Parse.String("*")
from rest in Parse.AnyChar.Many().Text()
select rest
);
var result = thingAfterStarParser.AtLeastOnce().Parse(input);
但result
最终只有一个元素,而不是两个。我认为这是因为rest
一直解析到输入的末尾。
如何告诉解析器解析直到星号或输入结束?任何帮助将非常感激!谢谢