![Заменить строку, но сохранить ее часть в Notepad++](https://rvso.com/image/1539542/%D0%97%D0%B0%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%D1%83%2C%20%D0%BD%D0%BE%20%D1%81%D0%BE%D1%85%D1%80%D0%B0%D0%BD%D0%B8%D1%82%D1%8C%20%D0%B5%D0%B5%20%D1%87%D0%B0%D1%81%D1%82%D1%8C%20%D0%B2%20Notepad%2B%2B.png)
Я хочу использовать Notepad++ для поиска/замены больших фрагментов кода:
У меня много:
углы[]={6.2744589,5.4066987,1.4066987};
с 3 значениями. Мне нужно поместить все первые и вторые значения в 0 и сохранить значение в третьей позиции :S
углы[]={6.2744589,5.4066987,1.4066987};
к
углы[]={0,0,1.4066987};
Спасибо!
решение1
Это можно сделать с помощью поиска и замены регулярных выражений в Notepad++.
Находить:angles\[\]={\d+\.\d+,\d+\.\d+,(\d+\.\d+)};
Заменить:angles[]={0,0,\1}
Обратите внимание, что в выражении выше мы экранируем скобки, отсюда и наличие обратной косой черты (), третья группа — это группа захвата (между скобками). В конце мы выполняем замену для первой и второй групп, и третья группа — это исходное значение (называемое \1
: захваченное значение).
Прилагаю пример скриншота.
решение2
- Ctrl+H
- Найти то, что:
\bangles\[\]=\{\K[^,]+,[^,]+
- Заменить:
0,0
- Replace all
Объяснение:
\b : word boundary, to be sure to match angles but not somethingangles
angles : literally angles
\[\]=\{ : literally []=, brackets have to be escaped as they have special meaning in regex
\K : Forget all we have seen until this point
[^,]+ : 1 or more any character that is not a comma, that matches also negative values
, : a comma
[^,]+ : 1 or more any character that is not a comma
- Проверьте регулярное выражение
- НЕ ПРОВЕРЯТЬ
. matches newline
Результат для данного примера:
angles[]={0,0,1.4066987};