正则表达式部分匹配
本文关键字:正则表达式部 | 更新日期: 2023-09-27 18:15:31
是否有一种方法可以查看字符串是否可以用几个字符扩展以匹配某些给定的正则表达式?我可以使用正则表达式类吗?我已经谷歌了一段时间,似乎我应该写自己的正则表达式解析器…
就像Alex说的:如果模式是abc
,那么字符串ab
将符合我的标准,而字符串def
或bc
将不符合我的标准。我希望这对任何在编译时未知的正则表达式都有效。
正则表达式被编译成决策树,允许在O(n)时间内决定长度为n的输入的匹配。您的自定义正则解析器可以简单地计算决策的数量,直到失败,这与匹配所需的步骤数相比,将表明参数与正则的"接近程度"。假设您使用相当简单的正则,并且"扩展"意味着将字符添加到字符串的末尾,这在计算上是可行的。
我认为您需要编写自己的Regex解析器。它需要能够获取任意的Regex并将其分解为元素。例如,它需要获取/abc/
并返回{ /abc/, /ab/, /a/ }
,并检查输入是否与它们中的任何一个匹配。
对于像/abc/
这样的简单表达式来说,这可能不是太糟糕,但是对于像(?<=s)t
这样的复杂表达式来说,它会变得很麻烦。