Здравствуйте, у меня есть 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
Ты можешь попробовать
^[^(]+(?=\()|(?<=[(,])\s*\K(?:<.*?>|.*?)(?=[,)])
Стоит подобрать все что нужно. Demo.
Что он делает, так это сопоставляет что-либо между началом строки, запятыми и круглыми скобками. Так что это не будет работать с такими вещами, как anim(foo())
,
Других решений пока нет …