Регулярное выражение для (x1;y1)(x2;y2)

Помогите составить регулярку для (x1;y1)(x2;y2)

Нужно вытащить каждую координату


Ответы (4 шт):

Автор решения: Рамзес Жданов

У меня такой вариант получился: (Пользовался этим сайтом: https://regex101.com/)

(\d+[.,]?\d+)

введите сюда описание изображения

→ Ссылка
Автор решения: Евгений Тихии

Была у программиста проблема, решил он воспользоваться регулярным выражением и вот...теперь у него две проблемы) Предлагаю решение подобного вида.

    $input = "(55.456867;45.234544)(60.546345;54.325633)(55.4535867;45.2365444)(60.546345;54.3235333)(55.4567;45.2342)(60.234;54.12312312)(55.3457;45.6456)(60.86447;54.262673)";
    $input = rtrim (ltrim ($input, '('), ')');

    $inputArray = explode (')(', $input);

    foreach ($inputArray as $cord) {
        $cords[] = explode (';', $cord);
    }

    var_dump ($cords);

На выходе получите:

array(8) { [0]=> array(2) { [0]=> string(9) "55.456867" [1]=> string(9) "45.234544" } [1]=> array(2) { [0]=> string(9) "60.546345" [1]=> string(9) "54.325633" } [2]=> array(2) { [0]=> string(10) "55.4535867" [1]=> string(10) "45.2365444" } [3]=> array(2) { [0]=> string(9) "60.546345" [1]=> string(10) "54.3235333" } [4]=> array(2) { [0]=> string(7) "55.4567" [1]=> string(7) "45.2342" } [5]=> array(2) { [0]=> string(6) "60.234" [1]=> string(11) "54.12312312" } [6]=> array(2) { [0]=> string(7) "55.3457" [1]=> string(7) "45.6456" } [7]=> array(2) { [0]=> string(8) "60.86447" [1]=> string(9) "54.262673" } }
→ Ссылка
Автор решения: PotroNik
\(([0-9]+(?:[.,][0-9]+){0,1});([0-9]+(?:[.,][0-9]+){0,1})\)

выбирается из (55.456867;45.234544) в группе 1: 55.456867 в группе 2: 45.234544 Под совпадение не попадут координаты (55.;45.) но подойдут под шаблон (55333;45333)

Пример тут:
https://regex101.com/r/NdAZew/5

→ Ссылка
Автор решения: Кирилл Малышев

Можно использовать функцию sscanf

$s = '(55.456867;45.234544)(60.546345;54.325633)';
sscanf($s, '(%f;%f)(%f;%f)', $x1, $y1, $x2, $y2);
echo $x1.' '.$y1."\n".$x2.' '.$y2;

Пример

→ Ссылка