Как вставить содержимое буфера обмена с макросом в Notepad ++ по формуле RegEx (альтернатива ctrl + v) в окне замены строки? - PullRequest
0 голосов
/ 12 февраля 2020

Вот пример:

Search for: test
Replace with: clipboard content

К найденному добавляются только символы c. То, что я ищу, может быть таким:

a

5

Поиск:

([a-z])|([0-9])

Заменить:

\1\2

Это добавить группу 2 к группе 1 Если есть решение для этого, буфер обмена не нужен. Результат должен быть следующим:

a5

5

Смысл и цель состоит в том, чтобы сделать это с несколькими строками в верхнем диапазоне.

a5
abc5
from5

5

Группа 2 должна быть исключена каким-либо видом команды regex, так что добавление происходит только для группы 1. Также должен быть предел (lookforward), который останавливается на пустой строке, чтобы можно было использовать замену всем. Но я не знаю, как должен выглядеть такой код регулярного выражения.

Это:

1
2
3
4
5
6
7
8
9
10

a A
b B
c C
d D
e E

должно быть так:

1.*a A|a A.*1| 2.*a A|a A.*2| 3.*a A|a A.*3| 4.*a A|a A.*4| 5.*a A|a A.*5| 6.*a A|a A.*6| 7.*a A|a A.*7| 8.*a A|a A.*8| 9.*a A|a A.*9| 10.*a A|a A.*10|1.*b B|b B.*1| 2.*b B|b B.*2| 3.*b B|b B.*3| 4.*b B|b B.*4| 5.*b B|b B.*5| 6.*b B|b B.*6| 7.*b B|b B.*7| 8.*b B|b B.*8| 9.*b B|b B.*9| 10.*b B|b B.*10|1.*c C|c C.*1| 2.*c C|c C.*2| 3.*c C|c C.*3| 4.*c C|c C.*4| 5.*c C|c C.*5| 6.*c C|c C.*6| 7.*c C|c C.*7| 8.*c C|c C.*8| 9.*c C|c C.*9| 10.*c C|c C.*10|1.*d D|d D.*1| 2.*d D|d D.*2| 3.*d D|d D.*3| 4.*d D|d D.*4| 5.*d D|d D.*5| 6.*d D|d D.*6| 7.*d D|d D.*7| 8.*d D|d D.*8| 9.*d D|d D.*9| 10.*d D|d D.*10|1.*e E|e E.*1| 2.*e E|e E.*2| 3.*e E|e E.*3| 4.*e E|e E.*4| 5.*e E|e E.*5| 6.*e E|e E.*6| 7.*e E|e E.*7| 8.*e E|e E.*8| 9.*e E|e E.*9| 10.*e E|e E.*10

1 Ответ

0 голосов
/ 15 февраля 2020

[edit:] Если вы просто хотите вставить текст, основанный на совпадениях с регулярными выражениями, вы также можете использовать приведенный ниже метод для этого. Просто следуйте первой части моего примера, но вставьте содержимое буфера обмена в поле «Заменить на» вместо текста замены, который я использовал.

Я обычно делаю это - если я вас правильно понимаю. Вполне возможно выполнить поиск по регулярному выражению, а затем заменить совпадения измененным текстом, который включает все совпадения или их части (группы внутри). Например, если вы хотите преобразовать функцию python в выражение C:

def foo(x, y):   --->   int foo(int x, int y) {

Вы можете открыть меню замены в Notepad ++ (ctrl-H) и в «Найти что:» поле put

def\s+([\w_]+)\(([\w_]+),\s*([\w_]+)\):

Затем в поле «Заменить на» введите:

int \1\(int \2, int \3\) {

Затем используйте «Найти следующий», чтобы заменить один экземпляр за раз, или, если вы » если вы рискуете, «Замените все» ... конечно, мое выражение ограничено только функциями, имеющими два параметра. Я сделал это просто для демонстрации.

...