我有以下PCRE正则表达式:如何捕获一个组,如果不存在,则匹配其余的正则表达式?
^(.+\/.*\.php)(\?)?(\/.+)$
而这个示例URL:
/subdir/file.php/this/is/a/path/info?par=am1¶m=2
正则表达式中的#1组/subdir/file.php和#2组中previosuly写入捕获/ this/is/a/path/info?par = am1 & param = 2。
我需要分成第四组参数(在?之后)。并得到如下:
组#1:/subdir/file.php 组#3:/这/是/一个/路径/信息 第4组:PAR = AM1 & PARAM = 2
有时候,URL没有参数。在这种情况下,我只需要匹配#1和#2组。
我已经试过这样:
^(.+\/.*\.php)(\?)?(\/.+)(\?.*)$
但如果URL没有参数,它不匹配的#1和#3组(/subdir/file.php和/本/是/一个/路径/信息)。
我该怎么做?
谢谢!
'parse_url'会比复杂的正则表达式更好 – anubhava
@anubhava我写过正则表达式,因为'parse_url'在PATH参数上返回/subdir/test.php/this/is/a/path/info,而我需要/这个/是/一个/路径/信息 –
你为什么不结合他们?使用'parse_url',然后将你的正则表达式应用到PATH参数。 –