有没有办法查看一个字符串是否可以用几个字符扩展来匹配某些给定的正则表达式?我可以使用Regex类吗?我GOOGLE了一段时间,似乎我应该写我自己的正则表达式解析器...正则表达式部分匹配
像亚历克斯说:如果模式为abc
字符串ab
将符合我的标准和串def
或bc
止跌”吨。我希望这适用于编译时未知的任何正则表达式。
有没有办法查看一个字符串是否可以用几个字符扩展来匹配某些给定的正则表达式?我可以使用Regex类吗?我GOOGLE了一段时间,似乎我应该写我自己的正则表达式解析器...正则表达式部分匹配
像亚历克斯说:如果模式为abc
字符串ab
将符合我的标准和串def
或bc
止跌”吨。我希望这适用于编译时未知的任何正则表达式。
正则表达式被编译成决策树,允许决定在O(n)时间内输入长度为n的匹配。您的自定义RE解析器可以简单地计数直到失败的决策数量,当与匹配所需的步骤数相比较时,它将指示参数对RE的“亲密度”。假设你使用的是相当简单的RE,并且“扩展”意味着在字符串的末尾添加字符,这在计算上是可行的。
我相信你需要编写你自己的Regex解析器。它需要能够采取任意的正则表达式并将其分解为元素。例如,它需要采取/abc/
并返回{ /abc/, /ab/, /a/ }
并检查输入是否与其中的任何匹配。
虽然对于像/abc/
这样的简单表达式来说这可能并不算太坏,但对于更复杂的表达式,如(?<=s)t
,它们将变得更加繁重,这些表达式看起来很倒霉。
谢谢你的答案,对于非常简单的正则表达式,这种方法足够好了 – Natalia
你能发表一个你想要完成的例子吗? –
你有没有想要实现的例子? –
我认为所要求的是查看需要什么字符来获得比赛。例如。 “abc”是模式,“ab”被提供。所述函数的结果是“c”。但是,该模式必须非常明确,才能做到这一点。 – Alex