1

说我要求

parent/child/child/page-name

在我的浏览器中。我想提取父、子以及页面名称。这是我目前使用的正则表达式。url 请求中有多少个孩子应该没有限制。目前,页面名称将始终位于末尾,永远不会被省略。

^([\w-]{1,}){1} -> Match parent (returns 'parent')
(/(?:(?!/).)*[a-z]){1,}/ -> Match children (returns /child/child/)
[\w-]{1,}(?!.*[\w-]{1,}) -> Match page name (returns 'page-name')

我玩得越多,我就越觉得这个解决方案有多笨拙。这是我在 ASP Classic (:() 中开发的一个小型 CMS。它有点像 MVC 路由路径。但不是基于 URL 请求调用控制器和函数。我会沿着层次结构向下移动并找到数据库中的适当页面。数据库使用嵌套集模型,并通过每个子页面的唯一页面名称链接。

我曾尝试使用 split 函数使用 / 分隔符进行拆分,但是我发现我将这么多拆分语句嵌套在一起,变得非常不可读。

总而言之,我需要一种有效的方法来从字符串中解析出父级、子级以及页面名称。有人可以提供替代解决方案吗?

老实说,我什至不确定正则表达式是否是解决我问题的最佳方法。

谢谢你。

4

1 回答 1

3

您可以尝试使用:

^([\w-]+)(/.*/)([\w-]+)$

然后访问使用创建的三个匹配组Match.SubMatches。有关更多详细信息,请参见此处

编辑

实际上,假设您知道这[\w-]就是零件名称中使用的全部内容,您可以改用^([\w-]+)(.*)([\w-]+)$它,它也可以自己处理没有孩子的情况。

于 2010-06-18T19:05:27.757 回答