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

Можно ли найти через регулярное выражение все необычные словосочетания в тексте, такие как: {color.RED}[text.test] - info:{color.END}.

Я хочу как-то заменить {color.RED} на [color=ffff00], а {color.END} на [/color].

Пример текста: txt = "{color.RED}[проверка.значения] - нумерация: {color.END}профик натуры {color.BOARD}пример вывода{color.END} золотистый"

Вот это не трогать в тексте - {color.BOARD}пример вывода{color.END}.


Ответы (1 шт):

Автор решения: ArtemLP

Уффф, вот такое наколякал. Искомая строка:

\{color.RED\}([^\{]*)\{color.END\}

То, на что мы заменяем (replace):

[color=ffff00]$1[\color]

Главная идея заключается в том, чтобы выделить всё, что находится между двумя тэгами (т.е. между символами } и {), в отдельную группу. Для этого используем круглые скобки. Всё, что попадает в круглые скобки, можно в параметре replace вставлять как $1 - это первая группа. Таких групп можно много наделать, но в данной задаче одной хватит. Остальное дело обычного найти-замени: пишем что хотим видеть до и после нашей группы.

Внутри группы:

[^\{]*

Используем возможность регулярных выражений искать все символы, кроме [^любой символ]. Нам нужно искать до первого попавшегося символа фигурная скобка, поэтому и указываем её как единственную, кого не хотим видеть в нашей группе.

→ Ссылка