首页 > 解决方案 > IEnumerable 上的类似正则表达式的模式匹配而不是 C# 中的字符串字符

问题描述

我正在尝试修改 C# 中的 CIL 代码指令列表。常见任务包括查找指令组或指令模式,并用其他指令替换它们,同时重用原始匹配中的一些信息。这听起来很像正则表达式,只是我的用例是在实例列表中的特定类型而不是字符串中的字符。

我可以编写一些基本代码来搜索和匹配内容并替换它,但我想知道是否有更通用的方法使用正则表达式语法,如“x”?或“(a|b)+”或“(a+)b*(c+)”,但 a、b、c 不是字符而是类的实例。最好在结果表达式中引用捕获的部分。我知道某些模式,如“单词开头”或“空格”是没有意义的。

在我的开源补丁库Harmony中,我以自定义元组类型表示操作码及其操作数,模式匹配应在 IEnumerable 上运行,并最终生成一个新的 IEnumerable。

是否有一个通用的模式匹配算法可以扩展来存档?

标签: c#regexpattern-matchingdynamicmethodopcodes

解决方案


推荐阅读