Как использовать подстановочные знаки в Notepad++, чтобы «найти и заменить» весь этот текст?

Как использовать подстановочные знаки в Notepad++, чтобы «найти и заменить» весь этот текст?

Я был бы очень признателен за помощь с этим. Я работаю с большим корпусом текста, который был размечен с помощью XML-скрипта, и мне нужно привести некоторые вещи в порядок. А именно, есть несколько сотен чисел в квадратных скобках (например, '[1234]'), которые мне нужно удалить (включая скобки). Каждое число отличается, и в этих числах может быть от 3 до 5 цифр.

Второе, что мне нужно сделать, это разместить XML-теги вокруг некоторых других фрагментов текста. Это имена в круглых скобках. То есть, например:

Он (г-н Смит) сказал...

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

Он <annot> (Mr. Smith) </annot>сказал...'.

Как мне выполнить оба эти изменения?

Я уже пробовал использовать Extended Mode и искать '[.*]', но он не возвращает никаких результатов. Когда я пробую то же самое с RegEx, я получаю много результатов, но, похоже, он ищет каждую квадратную скобку в корпусе.

решение1

Квадратные скобки — это специальный символ в регулярных выражениях ( [a-z]означает любой символ в диапазоне aот до z), поэтому их придется экранировать.

Ваше выражение поиска станет \[\d+\](со \d+значением одной или нескольких цифр). Однако вы хотите заменить это только цифрами. Вам нужно настроить группу захвата, используя скобки, и сослаться на нее в выражении замены. Ваши настройки станут:

  • Искать:\[(\d+)\]
  • Заменить:\1

Что касается вашей второй проблемы, я не уверен, что правильно ее понимаю в приведенном вами контексте... если в скобках указаны только имена, вы можете просто заменить их \([^\)]+\)на <annot> \0 </annot>, или, может быть, \(Mr\. [^\)]+\)если именам предшествует Mr..

Если вдаваться в подробности, то это работает так:

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

Если у вас есть список имен, которые нужно заменить, то вам лучше использовать его \(whatever name\)в качестве поискового выражения, а если его нет, то это невозможно, поскольку вы не сможете заставить регулярное выражение «угадывать», что является именем, а что нет.

Связанный контент