Я пытаюсь разобрать строку, содержащую текст с вкраплениями звезд:
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
анализируется полностью до конца ввода.
Как я могу сказать парсеру анализировать до звезд или конца ввода? Любая помощь приветствуется! Спасибо