问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

哪位大神能帮我读一下这段正则表达式,php中的,我知道是关于url解析的,后面是解析控制器,只是落

发布网友 发布时间:2022-05-06 20:03

我来回答

2个回答

热心网友 时间:2023-09-14 17:24

我不会php,但也可以为您解答。

前面你应该懂了,就是原字匹配,

我猜括号的地方才是你看不懂的。

在正则表达式里,括号匹配到的内容可以存入分组内,

比如有一段正则

qq:(\d+) nick:([a-zA-Z]+)

用来匹配文本

qq:1014359461 nick:Wizard

匹配完后,

第一个括号的表达式『(\d+)』匹配到的内容『1014359461』会存入分组1里,

第二个括号的表达式『([a-zA-Z]+)』匹配到的内容『Wizard』会存入分组2里,

如果再有括号,就继续存入分组3、分组4...

不过这样会有上限,也不是很清晰

所以,可以使用另一种方法,看如下正则

qq:(?<qq>\d+) nick:(?<nick>[a-zA-Z]+)

还是匹配刚才那段文本,匹配成功后,

不再有刚才的分组1和分组2,取而代之的是 名为『qq』和『nick』这两个分组,后面我简称它们为 $qq、$nick

存入 $qq 的内容依然是之前 分组1 里的 『1014359461』

存入 $nick 的内容依然是之前 分组2 里的 『Wizard』



再谈谈括号内的『|』符号,如下正则

(css|js|flash)

它含义是,此处位置能匹配的只有

『css』或者『js』,或者『flash』,否则匹配不成功

匹配成功后会存入 一个分组内


如你发的图里的

(?<controller>(css|js|flash))

这部分含义如前一条所说那样,只不过会把匹配到的值存入 $controller 分组内


接下来,讲『[...]』

[123abc]

这个正则表示只匹配『123abc』里的其中一个字符,

如果有用『-』且不在第一位则有特殊含义(第一位是普通符号),如下

[1-3a-c]

这个正则就和上一条正则功能是一样的,表示允许匹配中括号里的一个字符,范围是从 1到3,或者 a到c


你的代码里

[a-zA-Z0-9/]

表示匹配一个字符,该字符的范围是 a-z(小写字母),或者A-Z(大写字母),或者0-9(一位数字),或者后面那个『/』字符


而后面加个+符号

[a-zA-Z0-9/]+

则是此处正则必须匹配一个 字母或数字 或者多个,并尽量匹配多个


那么你代码里的

(?<name>[a-zA-Z0-9/]+)

就是将前前一条正则匹配到的内容存入 $name 分组中去


我不懂PHP,但知道这里的 『/(』 是转义字符,这个是php语法里的东西,你要注意这一点

还有前面提到那么多次“分组“这个词,那这些分组怎么获取呢,这个是php语言里的东西,你可以去查一下

另,据我所值『(?<name>...)』这样的语法也可以这么写『(?'name'...)』,不知道这个能在php里通过不。


至此,你的疑惑应该解开了吧,很用心写的,请采纳哈,谢谢~

热心网友 时间:2023-09-14 17:25

前面都是照着匹配
主要是后面这一块
(?<controller>(css|js|flash))/(?<name>[a-zA-Z0-9/]+)
其中
(css|js|flash)表示匹配css或js或flash
[a-zA-Z0-9/]表示匹配[]中的任意一个字符,也就是26个英文字母(不分大小写)和0到9以及正斜线中的任意一个,后面的+表示[]部分至少重复一次。整体来说就是匹配任意字母数字和正斜线的组合。
(?<controller>)和(?<name>)不会匹配任何内容,在这里只是起到一个对其中匹配部分命名的作用,最后匹配结果中的内容可以通过这个命名来读取
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
艾芙洛洗发水为什么不在商场销售商 艾芙洛洗发水是英国的吗 毕业生刚刚签了三方协议,想毁,怎么办 适合夫妻干的生意有哪些 新生蜜蜂多久出巢试飞 新生蜜蜂什么时候进行首次试飞? 蜜蜂几月几日出生外貌和颜色? 当脚模一定要脚趾修长吗 脚长成这样,能当脚膜吗 固话遇忙记存呼叫业务有什么特点? 什么是固话遇忙记存呼叫业务? 龙族 战士 法师 JS 的 各级别称号是什么啊 长江的各种叫法 html中内部放可以运行,而把js放到外部就不能执行,代码如下,请大神指 ... 如何在vs上安装cocos2dxinstallwizardforvs2010,js 大哥:75行附近的代码 长江说法是哪里的 在OA中上传附件后,显示文件大小为0,并且不能浏览附件,怎么解决 请问这句话有错吗?$jswizard[$val[&#39;id&#39;]][&#39;parameter&#39;] = $charset 梦幻西游认证六技如意仙子:魔心,法爆,法连,驱鬼,小雷,大雷!几钱? 个税年终奖和月薪同时申报怎样填报? 、《我知女人心》里为什么孙子钢听不到他那两个秘书大雷小雷的心声呢? 为什么一打雷,电表就跳闸?不管是大雷还是小雷,只要打雷,电表就跳 个税全年一次性奖金7000元应该如何申报? 请问如何知道买卖股票的主体 发票找不到了,怎么办 用oA上传图片附件后,想查看但无法显示该图片 已经开完了的普通发票找不到了怎么办? OA办公系统发文件时上传了正文附件在发送成功后没有怎么办? 有关市盈率的说法正确的是 怎么样知道当天,股票实时交易统计,买卖数量?买卖机构?成交人数? 在什么地方能买到最普通的发票? 长江说法是哪个电视台节目 我用OA系统办公时火狐上传不了附件,只显示javascript:uploadADDfile(1... 狗的性格特点作文一百字 手机淘宝已开增值税纸值普通发票,要在什么地方下栽? 长江名字的由来? 关于长江的说法,正确的是 网上可以查询普通发票的真伪吗 关于长江说法正确的是(  )A.长江是我国最长的河流,水量大,也是汛期最长的河流B.长江发源于巴颜喀 如何安装ioncube扩展 关于长江的说法正确的是(  )①是水能宝库 ②是黄金水道 ③注入黄海 ④发源于唐古拉山.A.①②③ 虚拟主机可以安装ioncube loader吗 如何安装apatana studio 关于长江 谁有圣安地列斯假面骑士wizard的摩托车 长江起源于哪个年代有什么传奇说法 去杭州四季青批发服装 从淮安有专车吗?且几点从什么地方坐车? 关于长江的说法,正确的是(  )A.长江水能资源主要集中在上中游河段B.“千里长江,险在荆江”,荆江 使用angularjs,为什么报controller没定义 长江的古称是什么