如何忽略正则表达式中的字符


how to ignore a character in the regular expression

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

只需要得到P1,但是这个返回/P1。

是否可以忽略?

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

这里有两个选项:

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

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

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

请注意,我还删除了?后你的组,因为我不认为你真的想要它,这使得前一个元素可选,所以正则表达式(/P[0-9])?将匹配文字任何字符串(它将匹配一个空字符串,如果/P[0-9]不能匹配)。

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

$pattern = '~/'KP[0-9]~';