У меня есть строка:Регулярное выражение для сравнения цифры предшествуют точкой
Product, Q.ty: 1, Price: 120.00
Я хочу, чтобы выбрать все после первой запятой до последних двух десятичных цифр (.00) - или, другими словами, , выберите Product
, который будет переменным, хотя; то, что не является переменной, является , Q.t
, и также известно, что последние два символа в строке будут содержать две цифры, которым предшествует точка .
. Однако только последний будет всегда 0
, предшествующий ему может быть что угодно 0-9
, но всегда цифра.
Я использовал это, чтобы соответствовать строке:
preg_replace('/' . preg_quote(', Q.t') . '.*?' . preg_quote('.00') . '/', '', $data);
проблема заключается в том, что он терпит неудачу, когда две последние цифры не 00, но что-то еще, как 50, 40, 30 и т.д. Если я использую одно и то же регулярное выражение с одной цифрой '0', оно не будет работать либо потому, что оно поймает первое 0 в строке, как в моем предыдущем примере, и оставит остальное 0.
Как настроить это выражение, чтобы поймать группе цифр, которым предшествует «.». точка?
* еще одно примечание: это preg_replace находится внутри петли foreach; некоторые данные не будут совпадать со всем шаблоном, который я пытаюсь передать; это нормально, поэтому в таких случаях я могу печатать строки так, как они есть; но за исключением случаев, в Еогеаспе, где есть совпадение, я хочу, чтобы заменить часть строки ни с чем *
Спасибо
В качестве небольшого намека вы можете использовать 'd' в регулярном выражении для соответствия цифре. – Tro
Не могли бы вы показать другие строки примеров и сообщить нам, что еще статично, например ** Продукт, ** и ** Цена: ** Я предполагаю. – varubi
«Продукт» изменяется; «, Q.t» останется там, последние два символа в строке всегда будут цифрами и впереди будет точка ». – unfulvio