Павел Ф.
62 сообщения
#10 лет назад
Уважаемые коллеги! Сам от себя не ожидал, но зашел в тупик со следующей задачей:

Допустим, есть строка 'a=1 x a=2 y a=3 z a=4'.
Как из нее с помощью регулярного выражения извлечь 'a=\d+', которое стоит ближе всего перед 'z'?
'/a=(+).*?z/' извлекает 'a=1 x a=2 y a=3 z', а нужно только 'a=3 z'.

Заранее очень благодарен за помощь.
Андрей Халецкий
3562 сообщения
#10 лет назад

(a=\d+)\sz - если там всегда один пробел до Z

Если фиг знает что то любая на выбор
(a=\d+)(\s|^a)z
.*(a=\d+).*?z 
Павел Ф.
62 сообщения
#10 лет назад
SmartDesign, огромное спасибо!,
.*(a=\d+).*?z  - то, что нужно.
Андрей Халецкий
3562 сообщения
#10 лет назад
Да, оно самое правильное