首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使url可以使用或不使用子表达式

使url可以使用或不使用子表达式
EN

Stack Overflow用户
提问于 2012-03-11 22:07:46
回答 1查看 30关注 0票数 0

我正在尝试重写一个url,如下所示

page.php?sort=66&search=s&category=2,3,4&archive=june&page=3

page-sort-1-search(s)-category-1,2,3-archive(june)-page3

但问题是,每次调用此页面时,每个子表达式my或不一定在url中,因此我必须将每个子表达式放在"( )?“中。因此,无论是否使用它们,正则表达式都可以正常工作。

代码语言:javascript
复制
^page
(-sort-([0-9]*))?     
(-search\(([a-z]*)\))? 
(-category-([0-9][,]?*))? 

.你明白我的意思了

现在的问题是,模式重写将括号中的每个子表达式视为实际变量

代码语言:javascript
复制
(-sort-([0-9]*))?  this is how mode rewrite interpret this  => $1 = -sort-66  ,  $2 = 66 

因此,对于每个子表达式,我得到了2个capture-group,对于具有5-6个变量的链接,这超过了10个,并且在模式重写中有9个匹配限制

有没有“()”的替代品?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-11 22:14:31

我必须承认,我对你的问题的某些部分感到有点困惑,所以如果我的回答是完全错误的,我提前道歉。。。但听起来你需要的是一个非捕获组。这一点:

代码语言:javascript
复制
(...)

匹配...并创建一个捕获组(您称之为“变量”);这是:

代码语言:javascript
复制
(?:...)

只匹配...,而不创建捕获组。因此,如果您要做的只是对子表达式进行分组,而不保存要用作$1的所有内容,那么它将非常有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9655598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档