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

时间:2013-06-18 21:24:12

标签: php regex ereg

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

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

可以忽略吧?

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

2 个答案:

答案 0 :(得分:4)

这里有两个选项:

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

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

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

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

答案 1 :(得分:0)

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

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