0

我不知道如何忽略 ER 中的项目。

只需要获取 P1,但这会返回 /P1。

可以忽略吧?

$pattern = "#(/P[0-9])?#";
4

2 回答 2

4

这里有两个选项:

  • 将其从组中排除,P1将是捕获组中的内容:

    $pattern = "#/(P[0-9])#";
    
  • 使用lookbehind,这样/甚至不是比赛的一部分,整个比赛将是P1

    $pattern = "#(?<=/)P[0-9]#";
    

请注意,我还删除了?after your group 因为我认为您实际上并不想要它,这使得前一个元素是可选的,因此正则表达式将匹配文字任何字符串(如果无法(/P[0-9])?匹配,它将匹配空字符串)。/P[0-9]

于 2013-06-18T21:28:32.313 回答
0

使用 preg_* 函数,您可以使用\K重置匹配开始的技巧,例如:

$pattern = '~/\KP[0-9]~';
于 2013-06-18T21:32:52.470 回答