我不知道如何忽略 ER 中的项目。
只需要获取 P1,但这会返回 /P1。
可以忽略吧?
$pattern = "#(/P[0-9])?#";
这里有两个选项:
将其从组中排除,P1
将是捕获组中的内容:
$pattern = "#/(P[0-9])#";
使用lookbehind,这样/
甚至不是比赛的一部分,整个比赛将是P1
:
$pattern = "#(?<=/)P[0-9]#";
请注意,我还删除了?
after your group 因为我认为您实际上并不想要它,这使得前一个元素是可选的,因此正则表达式将匹配文字任何字符串(如果无法(/P[0-9])?
匹配,它将匹配空字符串)。/P[0-9]
使用 preg_* 函数,您可以使用\K
重置匹配开始的技巧,例如:
$pattern = '~/\KP[0-9]~';