Я не знаю, как игнорировать элемент из ER.как игнорировать символ в регулярном выражении
просто нужно получить P1, но это возвращает/P1.
можно просто игнорировать планку?
$pattern = "#(/P[0-9])?#";
Я не знаю, как игнорировать элемент из ER.как игнорировать символ в регулярном выражении
просто нужно получить P1, но это возвращает/P1.
можно просто игнорировать планку?
$pattern = "#(/P[0-9])?#";
Есть два варианта здесь:
Исключить его из группы, P1
будет содержанием в группе захвата:
$pattern = "#/(P[0-9])#";
Используйте просмотр назад, так что /
не участвует в розыгрыше, в этом матче P1
:
$pattern = "#(?<=/)P[0-9]#";
Обратите внимание, что я удалил ?
после вашей группы, потому что я не думаю, что вы на самом деле хотите, это делает предыдущий элемент необязательным, поэтому регулярное выражение будет соответствовать (/P[0-9])?
буквального любой строки (она будет совпадать с пустая строка, если /P[0-9]
не может быть сопоставлена).
Я использую preg_replace и не работал –
@PapaCharlie Просьба привести несколько примеров ввода образца и ожидаемого результата. –
preg_replace ("#BLOG (/ P [0-9]) #", "$ 1", "BLOG/P6"); // output:/P6 // expected: 6 –
С preg_ * функции, вы можете использовать \K
трюк, возвращаются в исходное начало матча, пример:
$pattern = '~/\KP[0-9]~';
, что вы имеете в виду? какие строки должны совпадать, какие части должны быть возвращены? можете ли вы привести примеры –
переместить '/' за пределы (группы). –
Вопросительный знак '?' Не имеет смысла, удалите его. – HamZa