gpt4 book ai didi

c# - 匹配失败的匹配字符串中的正则表达式索引

转载 作者:太空狗 更新时间:2023-10-29 20:29:41 25 4
gpt4 key购买 nike

我想知道是否可以在正则表达式尝试匹配时失败的给定字符串中提取索引位置?

例如,如果我的正则表达式是“abc”,而我试图将其与“abd”匹配,则匹配将在索引 2 处失败。

编辑澄清。我需要它的原因是允许我简化我的应用程序的解析组件。该应用程序是一个 Assmebly 语言教学工具,允许学生编写、编译和执行类汇编程序。

目前我有一个 tokenizer 类,它使用正则表达式将输入字符串转换为标记。这很好用。例如:

标记器将在给定以下输入 = "INP :x:"
的情况下生成以下标记:

Token.OPCODE, Token.WHITESPACE, Token.LABEL, Token.EOL

然后分析这些标记以确保它们符合给定语句的语法。目前,这是使用 IF 语句完成的,并且证明很麻烦。这种方法的好处是我可以提供详细的错误消息。即.E

if(token[2] != Token.LABEL) { throw new SyntaxError("Expected label");}

我想使用正则表达式来定义语法,而不是烦人的 IF 语句。但是这样做我失去了返回详细错误报告的能力。因此,我至少想告知用户错误发生的位置。

最佳答案

我同意 Colin Younger 的观点,我认为现有的 Regex 类是不可能的。不过,我觉得只要你愿意出一点汗也是可以的:

  1. 获取正则表达式类源代码(例如。 http://www.codeplex.com/NetMassDownloader下载 .Net 源代码)。
  2. 将代码更改为只读具有失败索引的属性。
  3. 确保您的代码使用该正则表达式而不是微软的。

关于c# - 匹配失败的匹配字符串中的正则表达式索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/107382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com