#regex #notepad
#регулярное выражение #notepad
Вопрос:
Есть ли какой-нибудь способ удалить все в скобках? Мне нужен скрипт Notepad , который может делать что-то подобное.
[0] = {
["HumanoidRootPart"] = {
["Torso"] = {
CFrame = CFrame.new(0, 1.324, -1.83) * CFrame.Angles(math.rad(-56.608), 0, 0),
["Left Leg"] = {
CFrame = CFrame.Angles(math.rad(-6.589), math.rad(2.464), math.rad(-30.023)),
},
["Right Arm"] = {
CFrame = CFrame.Angles(0, 0, math.rad(-64.229)),
},
["Head"] = {
CFrame = CFrame.Angles(math.rad(6.131), 0, 0),
},
["Left Arm"] = {
CFrame = CFrame.Angles(0, 0, math.rad(53.572)),
},
["Right Leg"] = {
CFrame = CFrame.Angles(math.rad(-5.73), math.rad(-2.063), math.rad(27.731)),
},
},
},
},
[0.017] = {
["HumanoidRootPart"] = {
["Torso"] = {
CFrame = CFrame.new(0, 1.324, -1.83) * CFrame.Angles(math.rad(-56.608), 0, 0),
["Left Leg"] = {
CFrame = CFrame.Angles(math.rad(-6.589), math.rad(2.464), math.rad(-30.023)),
},
["Right Arm"] = {
CFrame = CFrame.Angles(0, 0, math.rad(-64.229)),
},
["Head"] = {
CFrame = CFrame.Angles(math.rad(6.131), 0, 0),
},
["Left Arm"] = {
CFrame = CFrame.Angles(0, 0, math.rad(53.572)),
},
["Right Leg"] = {
CFrame = CFrame.Angles(math.rad(-5.73), math.rad(-2.063), math.rad(27.731)),
},
},
},
},
К этому:
RunAnim(0)
RunAnim(0.017)
Это было бы действительно полезно для меня, в настоящее время я создаю сценарий анимации для своей игры с использованием CFrame.
В основном просто берем числа и добавляем RunAnim. Я прошел через 1 из них, пока не понял, что должен обратиться сюда за помощью.
Спасибо!
-reidlab
Комментарии:
1. Чтобы уточнить, вы хотите извлечь числа между
[
и]
?
Ответ №1:
Другой вариант — записать цифры между квадратными скобками в начале строки только в группе 1, а затем использовать эту группу при замене.
Чтобы предотвратить ненужное отслеживание назад, вы можете сопоставить все следующие строки, используя отрицательный прогноз, утверждающий, что строка не начинается с цифровой части в квадратных скобках.
Найти что:
^h*[(d (?:.d )?)].*(?:R(?!h*[d (?:.d )?]).*)*
Заменить на:
RunAnim($1)
Объяснение
^
Начало строкиh*
Сопоставьте 0 горизонтальных пробельных символов[
Открытие соответствия[
(d (?:.d )?)
Группа захвата 1, сопоставьте 1 цифр с необязательной десятичной частью
]
Закрытие соответствия]
.*
Сопоставьте оставшуюся часть строки(?:
Не группа захватаR
Сопоставьте любую последовательность перевода строки в Юникоде(?!h*[d (?:.d )?])
Отрицательный прогноз, утверждайте, что строка не начинается с цифры между[]
.*
Сопоставьте всю строку
)*
Закройте группу и повторите ее 0 раз, чтобы соответствовать всем строкам
Ответ №2:
Вы можете попробовать следующий поиск и замену, включив режим dot all с NPP:
Find: [(d (?:.d )?)].*?(?=[d (?:.d )?]|$)
Replace: RunAnim($1)n
ДЕМОНСТРАЦИЯ
Вот объяснение регулярного выражения:
[(d (?:.d )?)] match e.g. [0.017] and capture in $1
.*? then match all content up to,
but not including,
(?=[d (?:.d )?]|$) the next number OR the end of the input