Я хочу написать регулярное выражение с утверждениями, чтобы извлечь число 55 из строки unknownstring/55.1
вот мое регулярное выражение
$str = 'unknownstring/55.1';
preg_match('/(?<=\/)\d+(?=\.1)$/', $str, $match);
так что, в основном, я пытаюсь сказать, дайте мне число, которое идет после косой черты, за которым следуют точка и число 1, и после этого нет никаких символов. Но это не соответствует регулярному выражению. Я просто пытался удалить $
знак с конца, и это соответствует. Но это условие необходимо, так как мне нужно, чтобы он был концом строки, потому что unknownstring
часть может содержать аналогичный текст, например unknow/545.1nstring/55.1
, Возможно, я могу использовать preg_match_all и взять последнее совпадение, но я хочу понять, почему первое регулярное выражение не работает, где моя ошибка.
Спасибо
Используйте якорь $
внутри взгляд:
(?<=\/)\d+(?=\.1$)
Вы не можете использовать $
за пределами положительного взгляда, потому что ваш номер не в конце ввода, и есть \.1
следуя за этим.
Других решений пока нет …