0

背景:我正在为 URL 文件名开发一种自定义的类似正则表达式的语法。它将像这样工作:

  • 用户编写一个模式,类似于"[a-z][0-9]{0,2}",并将其作为输入传递
  • 它被程序解析并翻译成它所代表的一组排列,即
    'a', 'a0', 'a00'...'z99'

这些模式的复杂性会有所不同,基本上任何可能出现在 URL 文件名中的东西都必须适应。该语言是 Java 或 PHP,但任何语言的示例或抽象/概念帮助都非常受欢迎。

我的问题是:

  1. 从哪里开始实施上述的“解析器”

更不重要的是,

  1. 如何以编程方式将解析的复杂模式转换为字符串
4

1 回答 1

0

这里有一个很好的答案: SO:/generate-all-permutations-of-text-from-a-regex-pattern-in-c

问题的症结在于……很好地定义你真正需要的东西,一旦你有你需要的东西就想办法停下来,并尽可能地缩小你的搜索范围,因为你正在与迅速爆炸的排列数量调情。“必须容纳可能出现在 URL 文件名中的任何内容。” 不会削减它。例如,如果您限制自己使用英文字符和数字,那么对于 6 个字符长的字符串,您将看到超过 20 亿个组合。每增加一个字符乘以 36。
如果使用 ISO 8859,您将获得超过 274 万亿个组合,而 Unicode 则超过 745 万亿个组合。

于 2009-12-19T03:46:24.890 回答