【发布时间】:2012-04-15 14:56:27
【问题描述】:
鉴于a = "/some/{tag}/here" 和b = "/some/text/here" 这两个字符串,我想要一个有效的算法来验证b 是否与a 定义的模式匹配,以及是否匹配在变量中提取b 的对应部分(即:tag = "text")。
也欢迎使用 C 或 Go 实现,但伪代码也可以。
【问题讨论】:
-
{pattern}有多复杂?通常,人们会使用正则表达式来处理此类事情。 -
{pattern}只是一个标签。命名确实令人困惑,“模式”由a表示,而不是{pattern}。我相应地编辑了问题。 -
目前还不清楚您在寻找什么。如果
a="/some/{tag}/here和b="/this/example/text",是否匹配并且您想提取字符串example?还是b必须是 `"/some/example/here"? -
{和}是在a和tag的其他地方不存在的实际触发器是纯文本吗? (没有正则表达式等) -a是在一个操作中重复使用多次(从多个d中提取)还是使用一次然后使用新模式,返回结果或... -
没错,
{和}是触发器,标签总是会被这些字符包裹起来,而标签是纯文本,会被用作变量名。我想用它来从 URL 中捕获参数。例如,如果我为"/some/{tag}/here"模式注册了一个处理程序并且用户导航到"/some/candy/here",我希望能够判断用户是否导航到有效路径,如果是,则从中提取标签,所以在这个从 URL 中提取"candy"的特殊情况。
标签: c string algorithm pattern-matching go