C# 正则表达式部分匹配

C# 正则表达式部分匹配,c#,regex,C#,Regex,有没有办法看一个字符串是否可以扩展为几个字符以匹配某个给定的正则表达式?我可以用Regex类来做吗?我在谷歌上搜索了一段时间,似乎我应该编写自己的正则表达式解析器 就像Alex说的:如果模式是abc,字符串ab将符合我的标准,而字符串def或bc则不符合。我希望这能适用于任何在编译时未知的正则表达式。我相信您需要编写自己的正则表达式解析器。它需要能够获取任意正则表达式并将其分解为元素。例如,它需要取/abc/并返回{/abc/,/ab/,/a/},然后检查输入是否与其中任何一个匹配 虽然这对于像

有没有办法看一个字符串是否可以扩展为几个字符以匹配某个给定的正则表达式?我可以用Regex类来做吗?我在谷歌上搜索了一段时间,似乎我应该编写自己的正则表达式解析器


就像Alex说的:如果模式是abc,字符串ab将符合我的标准,而字符串def或bc则不符合。我希望这能适用于任何在编译时未知的正则表达式。

我相信您需要编写自己的正则表达式解析器。它需要能够获取任意正则表达式并将其分解为元素。例如,它需要取
/abc/
并返回
{/abc/,/ab/,/a/}
,然后检查输入是否与其中任何一个匹配


虽然这对于像
/abc/
这样的简单表达式来说可能不是太糟糕,但是对于像
这样的更复杂的表达式来说,这将变得非常繁重(?正则表达式被编译成决策树,允许决定长度为n的输入是否匹配O(n)时间。您的自定义RE解析器可以简单地计算失败前的决策数量,与匹配所需的步骤数量相比,这将表明参数与RE的“接近程度”。假设您使用的是相当简单的RE,则通过“扩展”意思是在字符串的末尾添加字符,这在计算上是可行的。

你能举一个例子说明你正在努力实现什么吗?你有没有一个例子说明你正在努力实现什么?我想要求的是看看需要哪些字符来匹配。例如,“abc”是模式,“ab”所述函数的结果为“c”。但是,模式必须非常明确,才能使类似的事情成为可能。感谢您的回答,对于非常简单的正则表达式,这种方法将非常好。但是如何访问决策树?我不知道您可以这样做。如果我们可以从C#的匹配对象中获取此信息,这将是b这是一个容易得多的问题。我假设创建自定义解析器需要生成您自己的决策树/DFA。有关更多信息,请参阅。