正则表达式部分匹配

时间:2011-11-21 18:21:56

标签: c# regex

有没有办法查看字符串是否可以使用几个字符进行扩展以匹配某些给定的正则表达式?我可以使用Regex类吗?我用Google搜索了一段时间,似乎我应该编写自己的正则表达式解析器...

像Alex所说:如果模式为abc,则字符串ab将符合我的条件,而字符串defbc则不符合。我希望这适用于编译时未知的任何正则表达式。

2 个答案:

答案 0 :(得分:1)

正则表达式被编译到决策树中,允许在O(n)时间内确定长度为n的输入的匹配。您的自定义RE解析器可以简单地计算直到失败的决策数,这与匹配所需的步数相比,将指示RE的参数的“接近度”。假设你使用相当简单的RE,并且“扩展”意味着在字符串的末尾添加字符,这在计算上是可行的。

答案 1 :(得分:0)

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

虽然这对于像/abc/这样的简单表达式来说可能并不算太糟糕,但对于像(?<=s)t这样看起来很复杂的更复杂的表达式来说,它会变得繁重。