c# - Superpower:仅当字符串开始一行时才将字符串与解析器匹配
问题描述
超能力解析时,如何只匹配一行中的第一个字符串?
例如,我需要匹配 "A: Hello Goodbye\n" 中的 A 冒号,而不是 "Goodbye A: Hello\n" 中的冒号
解决方案
在这里使用您的示例,我会将您的ActorParser
和NodeParser
定义更改为:
public readonly static TokenListParser<Tokens, Node> ActorParser =
from name in NameParser
from colon in Token.EqualTo(Tokens.Colon)
from text in TextParser
select new Node {
Actor = name + colon.ToStringValue(),
Text = text
};
public readonly static TokenListParser<Tokens, Node> NodeParser =
from node in ActorParser.Try()
.Or(TextParser.Select(text => new Node { Text = text }))
select node;
我觉得 Superpower 有一个错误,因为我不知道为什么NodeParser
我必须Try()
在第一个解析器上加上 a 时用 a 链接它Or()
,但如果我不添加它会抛出错误。
此外,您在检查时的验证input[1]
不正确(可能只是复制粘贴问题)。它应该检查"Goodbye A: Hello"
而不是"Hello A: Goodbye"
推荐阅读
- android - 如何在 Kotlin Android 中处理特殊字符
- python - Pandas 在具有不同索引长度的多个键上左连接
- c# - 有没有办法获取具有 set 方法的属性?
- mongodb - 在 Gremlin 中使用帖子创建者的用户数据查询朋友的所有帖子
- c# - 数据网格视图复选框中的多项更新
- selenium - Selenium IDE 从通过 Selenium-side-runner 运行的配置文件中提取参数/变量
- azure - Azure CosmosDB 存储过程将函数参数更改为较小的大小写
- oauth-2.0 - Core3.1 IdentityServer4 WebAPI 找不到/读取 access_token?
- html - 让父 div 与孩子一起成长
- javascript - 尝试在 Wordpress PHP 循环中运行一些 jQuery 来定位动态标题并使用 jQuery 中的 Circle 库围绕鼠标旋转标题