Доброго времени суток. При составлении регулярного выражения столкнулся с такой проблемой
Мне нужно получить значение "value":. Строка "positive": true может быть как до этого значения, так и после. Я принял решение составить 2 шаблона, а перед ними использовать логическую или |, но дело в том, что помимо нужных мне значений в массив совпадений попадают пустые строки. Т.е если значений "value": нашлось 3 штуки, то размер массива будет 6, а сами значения будут чередоваться через пустые строки. Никак не пойму почему так происходит. Например эта конструкция возвращает либо null, либо число.
Т.е всё работает так, как и должно, но в данном примере логическая ИЛИ находится в пределах одной группы.
Сразу скажу, что с регулярными выражениями я работаю впервые, для меня это жуткие дебри, тем не менее все интересующие меня данные я всё же смог получить, осталось исправить только ранее описанный недочёт. Поможете?)
Код:
StringRegExp($sResult[$i],'"positive": true.*?"value": ([-]?[0-9]*[.]?[0-9]+)|"value": ([-]?[0-9]*[.]?[0-9]+).*?"positive": true',3)
Мне нужно получить значение "value":. Строка "positive": true может быть как до этого значения, так и после. Я принял решение составить 2 шаблона, а перед ними использовать логическую или |, но дело в том, что помимо нужных мне значений в массив совпадений попадают пустые строки. Т.е если значений "value": нашлось 3 штуки, то размер массива будет 6, а сами значения будут чередоваться через пустые строки. Никак не пойму почему так происходит. Например эта конструкция возвращает либо null, либо число.
Код:
StringRegExp($sResult[$i],'"buyout_price": (null|\d+)
Т.е всё работает так, как и должно, но в данном примере логическая ИЛИ находится в пределах одной группы.
Сразу скажу, что с регулярными выражениями я работаю впервые, для меня это жуткие дебри, тем не менее все интересующие меня данные я всё же смог получить, осталось исправить только ранее описанный недочёт. Поможете?)