множество регулярных выражений в скобках

Здравствуйте, у меня есть API-функция, которая в основном текст в моей базе данных

вот функции, которые я использую

alpha(integer link, integer face, float alpha);
color(integer link, integer face, vector color, float alpha);
description(integer link, string description);
glow(integer link, integer face, glow);
name(integer link, string name)
position(integer link, vector position)
rotation(integer link, vector rotation)
texture(integer link, integer face, string texture_uuid, vector repeats, vector offsets, float rotation_in_radians)

по сути, я хочу запустить регулярное выражение, чтобы вернуть каждый из них как массив, как я пытался много раз, и мне не повезло, например, в текстурах. Мне нужно выбрать ключ uuid, который я использовал

([a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12})

который хорошо работает для этого одного поля, но так как у меня есть другие поля, он, кажется, не попадает в массив, так как я не уверен, как запустить регулярное выражение с умножением

также ссылка и лицо также могут иметь отрицательные значения, как я использовал (<[^>] *> | \ w +), которая работает до некоторой степени, но не все функции API

Любая идея, как я могу построить регулярное выражение для работы со всеми типами функций API, как мне нужно в массиве, как это

array(
[0] = function,
[1] = link
[2] = face
[3] = texture uuid
[4] = texture repeats
[5] = offset
[6] = rotation
)

это пример использования функции текстуры. Надеюсь, я объяснил это достаточно, потому что мне было тяжело здесь и я искал помощи

вот пример, который я использовал

https://regex101.com/r/vO2gW1/3 как вы видите, он сломан, как не поднимать uuid

или есть способ с помощью регулярных выражений или другого метода, чтобы выполнить их как функции, и даже сохранить структуру как функции, чтобы вернуть данные в формате, который мне нужен для использования PHP

0

Решение

Ты можешь попробовать

^[^(]+(?=\()|(?<=[(,])\s*\K(?:<.*?>|.*?)(?=[,)])

Стоит подобрать все что нужно. Demo.

Что он делает, так это сопоставляет что-либо между началом строки, запятыми и круглыми скобками. Так что это не будет работать с такими вещами, как anim(foo()),

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]