Форум программистов, компьютерный форум, киберфорум
Софт: Текстовые редакторы
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 1
Регистрация: 22.10.2015
Сообщений: 38
1

Добавить текст в Notepad++. Регулярные выражения

24.04.2020, 17:25. Просмотров 382. Ответов 9
Метки нет (Все метки)

В тексте есть слова скажем 6 заглавных латинских букв подряд. Надо к ним в конце добавить дополнительный текст "text".

["][A-Z][A-Z][A-Z][A-Z][A-Z][A-Z]["][,]

Вот так я ищу (там еще кавычки в начале и всегда запятая после). А как добавить, не понимаю. То есть что в поле Replace писать.

["][A-Z][A-Z][A-Z][A-Z][A-Z][A-Z]text["][,]

Так не работает
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.04.2020, 17:25
Ответы с готовыми решениями:

Регулярные выражения, notepad++
Нужно удалить текст между фрагментом определенного текста (например, "b1") и символом ")". Но...

Замена в Notepad++ через регулярные выражения
Добрый день, знатоки! Помогите, пожалуйста. Есть текст в котором 1000 строк и в конце каждого...

Регулярные выражения поиска email в Notepad++
Добрый день. ПОдскажите, как в тексте удалить всё кроме имейл адресов. Написал регулярное для...

Регулярные выражения для замены в Notepad
Здравствуйте. Помогите с регулярным выражением в Notepad++ Имеется: <p>site.com/random1515115</p>...

9
2685 / 1220 / 208
Регистрация: 10.12.2013
Сообщений: 4,124
24.04.2020, 21:33 2
Найти "[A-Z]{6}",\K

Заменить мойтекст

Добавлено через 7 минут
Пояснение:
Шаблон "[A-Z]{6}",\K утверждает, что во всем тексте должна найтись такая точка,
слева от которой окажется 6 латинских символов в двойных кавычках и запятая
и если это так, то именно в эту невидимую точку вставится мойтест

Добавлено через 4 минуты
В терминах регулярных выражений такой шаблон называется LookBehind Assertion
0
0 / 0 / 1
Регистрация: 22.10.2015
Сообщений: 38
24.04.2020, 22:10  [ТС] 3
Находит, но не вставляет.

Шаблон "[A-Z]{6}",\K утверждает, что во всем тексте должна найтись такая точка,
слева от которой окажется 6 латинских символов в двойных кавычках и запятая
и если это так, то именно в эту невидимую точку вставится мойтест
И как он должен вставить? Судя по тому, что написали, то после запятой, хотя надо сразу полсе 6 символов (кстати, еще должны быть заглавные).

то есть, было так:
"ABCDEF",

нужно сделать так:
"ABCDEFtext",
0
2485 / 1259 / 480
Регистрация: 06.06.2017
Сообщений: 4,230
24.04.2020, 23:24 4
Нет в Notepad++ никаких \K. Да и какие могут быть кавычки вокруг выражения?
Положительное "заглядывание назад" делается так: (?<=[A-Z]{6})
И, разумеется, должен стоять крыжик "Учитывать регистр".
1
0 / 0 / 1
Регистрация: 22.10.2015
Сообщений: 38
25.04.2020, 00:46  [ТС] 5
Спасибо, а ближе к моей проблеме можно. По вашему выражению ищет, но когда я пытаюсь заменить, ничего не происходит. В тексте файла появляется попап надпись - zero length match.
Как бы мне осуществить то, что мне нужно - добавить несколько символов только там, где надо.
0
2485 / 1259 / 480
Регистрация: 06.06.2017
Сообщений: 4,230
25.04.2020, 01:01 6
Как это ищет, но не меняет? Фраза замены во втором поле прописана? Крыжик "Зациклить поиск" стоит? Нажимается "Заменить все", а далее?
1
2685 / 1220 / 208
Регистрация: 10.12.2013
Сообщений: 4,124
25.04.2020, 10:30 7
посмотрел на версию npp: 7.8.4

Цитата Сообщение от dudt Посмотреть сообщение
нужно сделать так:
"ABCDEFtext",
"[A-Z]{6}\K(?=",)
text


Цитата Сообщение от FlasherX Посмотреть сообщение
Нет в Notepad++ никаких \K
у меня в голове тож застряло с незапамятных времен, что полностью PCRE в npp не поддерживается, однако же \K работает.


Поскольку lookbehind в нашем случае имеет фиксированную длину, то можно и так:
(?<="[A-Z]{6})(?=",)
текст
1
0 / 0 / 1
Регистрация: 22.10.2015
Сообщений: 38
25.04.2020, 11:59  [ТС] 8
Спасибо, всё получилось!
0
2685 / 1220 / 208
Регистрация: 10.12.2013
Сообщений: 4,124
25.04.2020, 12:33 9
На NPP форумах утверждают, что, начиная с версии 6, NPP собирается с библиотекой boost 1.55,
а последняя поддерживает Perl-регулярные выражения, но не совпадает тем не менее с реализацией PCRE.

В документации по boost указано, что под капотом имеется три диалекта RE
  • Perl (this is the default behavior).
  • POSIX extended (including the egrep and awk variations).
  • POSIX Basic (including the grep and emacs variations).

Судя по тому, что \K таки поддерживается, notepadpp собран с Perl-RE.

https://www.boost.org/doc/libs/1_55_...rl_syntax.html
0
2685 / 1220 / 208
Регистрация: 10.12.2013
Сообщений: 4,124
27.04.2020, 13:49 10
ещё раз, что это за метасимвол \K ( Keeping back some text )

\K сдвигает положение внутреннего курсора исследуемого текста (напоминаю, весь этот текст представлен переменной $0 )
до текущего положения. Иными словами, всё, что находится слева от \K, становится 'невидимым' и не участвует в формировании совпадающей с рег. выражением части нашего текста. ( соответственным образом изменяется и пeременная $` )

Всю эту радость можно использовать для эмуляции поведения механизма lookbehind assertion переменной длины,
которое отсутствует в Perl Regex-engine, а есть только fixed length lookbehind assertion.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.04.2020, 13:49

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Notepad++ Регулярные выражения поиск ближайшего блока после нахождения необходимого значения в коде
Добрый день! Прошу подсказать: есть примерно такая структура &lt;body&gt; &lt;tag&gt; &lt;number=1&gt;...

ЧПУ. Замена строк, регулярные выражения. Как правильно использовать переменную в регулярные выражения ?
Здравствуйте! Решил реализовать ЧПУ на своем сайте. Первый этап это замена всех реальных ссылок на...

Разбить текст по символу [Регулярные выражения]
Добрый вечер всем! &quot;Диск-переходник Frabosk 12см для индукционной...

Регулярные выражения - заменить/вставить текст
Дан произвольный текст: «У Пети было 3*, а у Маши было 5*. Маша съела 1*, а Петя съел 2*. Сколько *...

Регулярные выражения - получить текст в кавычках
Добра всем.. Подскажите как из текста вытащить текст заключённый в кавычки (только он меняется)...

Регулярные выражения. Перевести шаблон в текст
Шаблон string patt = &quot;swi.(l?f g+) {1,5}\^&quot; перевести в текст string text = &quot; &quot;;


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.