我不知道如何忽略ER中的项目。
只需要获得P1,但这会返回/ P1。
可以忽略吧?
$pattern = "#(/P[0-9])?#";
答案 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]~';