我只需要在"listing"之后匹配"name",但这些单词当然可以是任何url目录或页面。
mydomain.com/listing/name
所以我唯一能"REGuest"(请求)的就是成为那里的某个父目录。换句话说,我想匹配"位置",即域后第二位的内容。
我正在尝试类似的东西
(?<=mydomain'.com/[^/'?&]+/)[^/'?&]+(?:/)?
但是,角色集在正后方模式中不起作用,至少它被设置为只匹配一个角色。一旦我尝试匹配一个以外的(例如用+、?或*修改它),它就会停止工作。
我显然错过了积极的后备语法,而且它似乎不是为我所尝试的。
如何匹配二级文件名?
谢谢。
Regular-expressions.info指出
坏消息是,大多数regex风格不允许只使用查找背后的任何正则表达式,因为它们不能应用正则表达式反向表达。因此,正则表达式引擎需要能够在检查之前计算出要后退多少步后面的人。。。
(进一步阅读,他们甚至提到了Perl、Python和Java。)
我认为量词可能是个问题。我在stackoverflow上发现了这个,并短暂地飞越了它
难道不可能只匹配整个路径,并使用一个组作为第二级文件名:吗
mydomain'.com'/[^'/'?&]+'/([^'/'?&]+)(?:'/)?
(注:我不得不逃离/进行测试…)
这样做的结果大概是:
Array
(
[0] => mydomain.com/listing/name
[1] => name
)
现在,因为我不知道你的问题的上下文,我只是假设你能够对结果进行后处理,并从结果中得到组1(索引1)。如果没有,我很遗憾不知道。。。