У меня есть много примеров следующего упрощенного блока кода:
$image = '';
$name = '';
$link = '';
$role_suffix = '';
$role_name = '';
$notes = '';
Все эти переменные содержат разные данные. Мне нужно превратить мой файл в массив, что я могу сделать с помощью простого поиска и замены, но сначала мне нужно переключиться $link
с помощью $image
. Таким образом:
$link = '';
$name = '';
$image = '';
$role_suffix = '';
$role_name = '';
$notes = '';
Наверняка должно быть решение с регулярным выражением, чтобы не менять их все вручную? Я пробовал собирать ответы, найденные в разных вопросах, но регулярное выражение для меня вообще не имеет смысла! Я поигрался с этим (<div>.*?</div>)(\s+)(<span>.*?</span>)
и заменил на, \3\2\1
но я не уверен в правильном синтаксисе.
решение1
- Ctrl+H
- Найти то, что:
(\$image\h*=\h*.+?;)([\s\S]+?)(\$link\h*=\h*.+?;)
- Заменить:
$3$2$1
- проверить Обернуть вокруг
- проверить Регулярное выражение
- СНЯТЬ ОТМЕТКУ
. matches newline
- Replace all
Объяснение:
( # start group 1
\$image # literally
\h* # 0 or more horizontal spaces
= # equal sign
\h* # 0 or more horizontal spaces
.+? # 1 or more any character but newline, not greedy
; # semicolon
) # end group 1
( # start group 2
[\s\S]+? # 1 or more any character, not greedy
) # end group 2
( # start group 3
\$link # literally
\h* # 0 or more horizontal spaces
= # equal sign
\h* # 0 or more horizontal spaces
.+? # 1 or more any character but newline, not greedy
; # semicolon
) # end group 3
Скриншот: