У меня есть несколько строк, которые выглядят как

\node[ ... Some code here ... { ... some more code
\node[ ... Some code here ... { ... some more code
\node[ ... Some code here ... { ... some more code

В каждой строке я хотел бы заменить код с [ на { своим кодом.

  • \node всегда находится в начале каждой строки.

  • { не в конце строки.

Я уже нашел (здесь) и попробовал такие вещи, как ^\\node.*\{ Или \\node.*\{ , Но оба дают одинаковый неудовлетворительный результат: весь код до самого последнего { в документе получает отмечен.

2 ответа2

1

В диалоговом окне «Поиск / замена» с помощью команды Найти что: узел [. * { И Заменить на: узел [тест { успешно заменяет ...Некоторый код здесь ... с тестом в каждой строке.

Вы должны указать следующие параметры:

  • НЕ ставьте галочку "Обернуть вокруг"
  • Галочка "Регулярное выражение"
  • НЕ ставьте галочку ". Соответствует новой строке"
0

На самом деле, вполне нормально включить Wrap вокруг. На самом деле, я предлагаю вам сделать.

Поскольку фрагмент гарантированно находится в начале строки, вы можете использовать курсор (^).

Следующие работы для меня:

Найти: ^\\node\[[^{]*\{ ; Заменить на: \\node[test{

^ Привязывает к началу строки. \\node\[ соответствует тексту \node[ после экранирования специальных символов. [^{]* берет все символы, кроме открытой фигурной скобки. (Обратите внимание, что здесь { не нужно экранировать, потому что он находится в классе символов.) Затем \{ хватает саму открытую скобку.


Если ... Some code here ... может содержать фигурные скобки:

Найти: ^\\node\[.*\{([^{]*)$ ; Заменить на: \\node[test{$1

Первая часть такая же. Тогда .* Будет соответствовать как можно большему числу символов. \{ соответствует открывающей скобке, затем ([^{]*)$ соответствует и захватывает все символы до конца строки. Поскольку указано [^{] , то оно не будет совпадать ни с одной открывающей скобкой, поэтому предыдущий \{ должен совпадать с последним { в строке.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .