【发布时间】:2010-12-28 06:03:30
【问题描述】:
背景:我正在为 URL 文件名开发一种自定义的类似正则表达式的语法。它将像这样工作:
- 用户编写一个模式,例如
"[a-z][0-9]{0,2}",并将其作为输入传递 - 它被程序解析并翻译成它所代表的排列集,即
'a','a0','a00'...'z99'
这些模式的复杂性会有所不同,基本上任何可能出现在 URL 文件名中的内容都必须包含在内。语言是 Java 或 PHP,但任何语言的示例或抽象/概念帮助都非常受欢迎。
我的问题是:
- 从哪里开始实现上述的“解析器”
更不重要的是,
- 如何以编程方式将已解析的复杂模式转换为字符串
【问题讨论】:
-
你能详细说明为什么正则表达式不适合这个问题吗?
-
这是一个非常有趣和困难的问题。这是一个 Ruby 测验的主题:rubyquiz.com/quiz143.html。我喜欢 Ruby 的一个特性,例如('a'..'zzzzz').each {|x| puts x} 打印大小为 1 到 5 的所有小写字母组合。
-
@GrayWizardx 您如何将正则表达式用于算法的排列部分?
标签: regex string syntax parsing parser-generator