【发布时间】:2011-06-03 17:39:23
【问题描述】:
如果我有一个像
这样的字符串a/{b,c,d}/e
那么我希望能够产生这个输出:
a/b/e
a/c/e
a/d/e
你明白了。我需要在 C 中实现这一点。我编写了一种蛮力类型的代码,我能够解析一对大括号(例如:/a/{b,c,d}/e/,但如果有多对大括号,例如 /a/{b,c}/{d,e}/f 在这种情况下我的方法会失败。我想采取更好的方法。
我不是直接要求代码,只是对有效算法的提示就足够了。我认为解析大括号的任务是重复的,我们可以遵循递归算法吗?
【问题讨论】:
-
看起来像一个简单的正则表达式解析。看看有限状态机(FSM 又名确定性有限自动机,DFA)。
-
是的,这也是我最初的想法,我对自动机理论的概念似乎很粗略。也许我应该重新拿起这本书并修改概念:)
-
你当然可以看看
zsh/bash/csh源代码(xpandbracesinglob.cforzsh,brace_expandin @ 987654332@ 为bash等)
标签: c algorithm string-parsing brace-expansion