2016-09-01 2 views
4

Я хочу указать захваченную группу, затем буквальную цифру в заменяющем члене, но буквальная цифра интерпретируется как часть номера группы.Как разграничить номер группы регулярных выражений в замене блокнота ++?

С учетом этого (ухитренных) пример:

Input text: A5 
Find: (.)(.) 
Replace: $16 
Expected result: A6 
Actual result: <blank> 

Экспериментирование предполагает, что $16 интерпретируется как "группы 16".

Я попытался с помощью $1\6 сделать 6 буквальным, который дал мне группу 1, но заготовка для \6 - то есть результат был просто A. $1\\6 дал мне A\6.

Общий вопрос: «Как указать группу 1, а затем буквальное число»?

+0

Вам просто нужно '$ {1} 6' –

+0

@ WiktorStribiżew Я не нашел никакой справочной системы для справки ++. Вы должны отправить его в качестве ответа. – Bohemian

ответ

5

Notepad S & R regex работает от библиотеки регулярных выражений Boost.

Однозначное $n обратная ссылка достигается с помощью брекетов ({}) вокруг ID, таким образом, вы можете использовать ${1}6 в качестве замены здесь.

Notepad ++ также поддерживает обратные ссылки стиль BRE, начиная с \ (\1, \2 и т.д. * до 9). Итак, когда вы используете \16 в сменном шаблоне, движок будет анализировать его только как Backreference 1 + буквальный символ 6. Вы можете проверить это, заменив (.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.) на \11 в 1234567890A. Взамен A (11-я группа) вы получите 11. $11 замена приведет к A.

Notepad++ help упоминает эти обозначения, но ему не хватает деталей:

$n, ${n}, \n
Возвращает то, что совпадающая Подвыражение пронумерованный п. Отрицательные индексы не оговорены.

+0

\ 16 также работает, по крайней мере, в NP ++ 6.9.2. –

+1

Да, потому что это BRE стиль backreference, и есть только от 1 до 9 таких backreferences. –

+0

В открывшемся абзаце справочной страницы есть ссылка (см. * "На веб-сайте исполнителя *) на полную информацию о языке регулярных выражений. Я не вижу ссылку на заменяющий язык, но его можно найти по адресу http://www.boost.org/doc/libs/1_48_0/libs/regex/doc/html/boost_regex/format/boost_format_syntax.html. Ссылки на оба документа можно найти по адресу http://stackoverflow.com/a/16104946/546871 – AdrianHHH

Смежные вопросы