有没有一种有效的方法来找到满足给定正则表达式的字符串?

时间:2014-03-15 14:20:15

标签: regex

让我们说我有这样的正则表达式(python表示法)r'^namespace/(\w+)/([0-9]+)/',有没有办法扭转这个正则表达式并找到一个符合它的字符串?

通过撤消我并不意味着手动构建'namespace/' + 'a_1' + '/' + '1'系统地反转任何正则表达式组成某些特殊字符。因此,对于每个正则表达式,我都可以生成(任何)字符串来实现它。

我唯一想到的就是用一些其他正则表达式来解析给定的正则表达式,但它似乎不是可接受的解决方案。虽然我希望整个操作具有巨大的复杂性,但我仍然希望至少有一些更复杂的方法来实现它。

1 个答案:

答案 0 :(得分:1)

  

我唯一想到的就是用一些其他正则表达式来解析给定的正则表达式,但这似乎不是可接受的解决方案

您不需要使用正则表达式解析正则表达式,但是您需要解析它。当你有一个正则表达式的AST时,你可以很容易地遍历它并在线性时间内构建一个可能的匹配(对于普通的正则表达式,没有像看起来那样过于花哨)。

检查Enumerating Regular Languages以获取示例代码和连续链接。