Есть ли способ заблокировать определенные скобки в Notepad ?

#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