【发布时间】:2018-10-08 16:31:02
【问题描述】:
在超能力解析时,如何只匹配一行中的第一个字符串?
例如,我需要匹配“A:Hello Goodbye\n”中的A冒号,而不是“Goodbye A:Hello\n”中的冒号
【问题讨论】:
-
您是否要解析多行文本,例如“A: Hello Goodbye”?你的预期输出是什么?键/值对,例如
Key = "A"和Value = "Hello Goodbye"?另外,您是否希望“再见 A:您好”解析失败? -
我想这取决于它是分词器还是解析器。如果分词器(我认为这是更好的解决方案),那么我希望任何与上述正则表达式匹配的东西都是一个令牌。
-
这真的取决于你的预期输出。你想从中提取什么数据?
-
根据上下文,语言中的每个命令都是单行(以换行符结束),某些字符/字符串如果开始行则具有特殊含义,但如果它们出现则没有之后。因此,如果它发生在解析器中,那么它可能会返回一个包含字符串“A:”的 Actor 对象,然后是一个包含字符串“Hello Goodbye”的 FreeText 对象。在第二种情况下,整个事情都是 FreeText("Goodbye A: Hello") 因为 Actor 解析器会失败。
-
我想我明白了,但是要构建这样的解析器,您需要提供一个更全面的示例。您能否更新问题以包含该问题以及您希望将输出解析为的类?
标签: c# tokenize superpower