Как заменить текст без изменения строки в кавычках с помощью регулярного выражения

я хочу заменить

$this->input->post("product_name");

с участием

$post_data["product_name"];

Я хочу использовать регулярное выражение notepad++, но не смог найти подходящего решения

В поиске --> $this->input->post("[\*w\]"); Вместо --> $post_data["$1"];

но он не работает

Вы ссылаетесь на соответствующую группу ($1), которую не создавали. Скобка Pu вне *w, чтобы сопоставить это слово и передать его на этап замены

samthegolden 09.04.2019 11:44
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
145
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Шаблон $this->input->post("[\*w\]"); не работает, потому что:

  • $ — это специальный символ, соответствующий концу строки, вам нужно использовать \$, чтобы сопоставить его как буквальный символ
  • [\*w'\] является искаженным шаблоном, так как нет соответствующего неэкранированного ] для [, открывающего класс символов. Кроме того, w просто соответствует w, а не любой букве, цифре или подчеркиванию, \w делает это.

Вы можете использовать

Найти то, что: \$this->input->post\("(\w*)"\);
Заменить: $post_data["$1"];

Если внутри двойных кавычек может быть любой символ, используйте .*? вместо \w*:

Найти то, что: \$this->input->post\("(.*?)"\);

Регулярный график:

Испытание АЭС:

Используйте этот шаблон, чтобы соответствовать желаемому тексту \$this->input->post\(("[^"]+")\);

И замените его узором \$post_data\[\1\]

Объяснение:

\$this->input->post - соответствует $this->input->post буквально

\(("[^"]+")\); - сопоставьте (буквально, затем сопоставьте двойные кавычки и все, что между ними, с "[^"]+" и сохраните в первой группе захвата, затем сопоставьте ); буквально

  • Заменить

$this->input->post("product_name");

к

$post_data["product_name"];

заменить, с активированным регулярным выражением

this->input->post\("(.*)"\);

к

post_data\["\1"\];

  • \x с числом x соответствует x-му совпадению, пойманному в скобках. Здесь мы ловим внутри любого персонажа this->input->post(XXXX);

  • Не забудьте экранировать специальный символ с помощью \. Ваши специальные символы были []()

Другие вопросы по теме

Регулярное выражение, чтобы найти слово и заменить его строкой, содержащей слово в блокноте ++
Получить комментарий к функции и описанию в файле пакета тела pl/sql
Как извлечь имена таблиц из файла тела пакета PL/SQL?
Есть ли регулярное выражение для добавления первых 4 символов в конец строки и последних 4 символов в начало строки?
Все строки, начинающиеся с ABC, найдите любой символ в диапазоне позиций X-Y и замените на 123
Найдите любые три символа внутри кавычек "..." и замените их теми же тремя символами внутри кавычек плюс пробел
Как удалить все строки, включая «collect_host_stats» с помощью регулярного выражения в Notepad++
Notepad ++ Regex: удалить строки, которые идентичны между начальной и определенной строкой, и обрезать после указанной строки
Нужна помощь в сокрытии строкового значения с помощью регулярного выражения в блокноте++
Можно ли настроить Notepad++ для использования раскладки клавиатуры Intellij?