我想知道是否有可能在尝试匹配时正则表达式中提取正则表达式失败的给定字符串中的索引位置?
例如,如果我的正则表达式是"abc"并且我试图将其与"abd"匹配,则匹配将在索引2处失败.
编辑以澄清.我需要这个的原因是允许我简化我的应用程序的解析组件.该应用程序是一个Assmebly语言教学工具,允许学生编写,编译和执行程序集程序.
目前我有一个tokenizer类,它使用regex将输入字符串转换为Tokens.这非常有效.例如:
给定以下input ="INP:x:"时,tokenizer将生成以下标记
:
Token.OPCODE, Token.WHITESPACE, Token.LABEL, Token.EOL
然后分析这些标记以确保它们符合给定语句的语法.目前,这是使用IF语句完成的,并且证明是麻烦的.这种方法的好处是我可以提供详细的错误消息.IE
if(token[2] != Token.LABEL) { throw new SyntaxError("Expected label");}
我想使用正则表达式来定义语法而不是烦人的IF语句.但在这样做时,我失去了返回详细错误报告的能力.因此,我至少想告知用户发生错误的WHERE.