我有这样的网址:http://example.com/c/TEXTTOMATCH/。问题在于URL并不总是这样。有时是http://example.com/c/TEXTTOMATCH/#/?test。我正在尝试使用正则表达式来捕获/c//之间的所有内容。我试过了

$catpreg    = preg_match('/c(.*)/', $reffer, $matches);


但是失败了。

最佳答案

试试这个:

preg_match('#/c/(.*?)/#', $reffer, $matches);


您只是c之后的所有字符,与斜杠不匹配。您的呼叫中的斜杠被用作正则表达式周围的定界符,我使用#作为定界符,因此我可以在正则表达式中使用/而不用对其进行转义。

非贪婪量词.*?确保在第二个示例中仅匹配TEXTTOMATCH,而不匹配TEXTTOMATCH/#

09-25 17:13