我想匹配第一个字符是字母的字符串,然后是数字或字母的多个字符,最后以字母结尾。例如a11a11a
,正确但a11aa11
不正确,因为它以数字而不是字母结尾。
我编写了以下代码来做到这一点:
var grammar =
from first in Parse.Letter.Once()
from rest in Parse.LetterOrDigit.Many()
from end in Parse.Letter.Once()
select new string(first.Concat(rest).Concat(end).ToArray());
var result = grammar.TryParse("a111a");
不幸的是LetterOrDigit.Many()
,也消耗了最后一个字母。
有什么办法可以避免这种情况?