Регулярні вирази при заміні в PhpStorm: що і як?


Всього голосів: 811

Часто виникає необхідність рефакторингу коду і зміни старих не потрібних елементів. Зазвичай можна обійтись звичайною заміною, але коли код складається з великої кількості рядків і файлів, то настає необхідність використання регулярних виразів.

Синтаксис регулярних виразів

Синтаксис регулярок залежить від інтерпретатора, але практично всі інтерпритатори мають спільні риси, за винятком деяких відхилень.

Кілька прикладів регулярок в PhpStorm

Додаємо додатковий клас в тег ul. Перед початком пошуку по регулярним виразам не забуваємо увімкнути опцію "Regex".

приклад заміни



В рядок пошуку:
[prism:markup]

<

ul class="(\S{1,})">[/prism:markup]
В рядок заміни:
[prism:markup]

<

ul class="$1 other-class">[/prism:markup]

Результат заміни буде таким:
[prism:html]

<

ul class="social-icons other-class">
...

<

ul class="slides other-class">
...[/prism:html]




Інший приклад. Виникає ситуація коли в класах не визначений простір імен. Приміром є такий код:

[prism:php]class AreasProgram extends \Program\Deploy[/prism:php]

Його потрібно привести у вигляд:
[prism:php]use Program\Deploy;
class AreasProgram extends Deploy[/prism:php]

В рядок пошуку:
[prism:markup]class (.*?) extends \(.\S+)\(.\S+)[/prism:markup]

В рядок заміни:
[prism:markup]use $2\\$3;
class $1 extends $3[/prism:markup]

Якщо комусь потрібні ще приклади регулярної заміни в PhpStorm пишіть в коментарях, залюбки допоможу і зроблю ще кілька прикладів.