поиск и замена

Russian main discussion
  • Author
  • Message
Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

А у меня меняет. Вокруг «\[ [^\]]+ \]» не должно быть пробелов.

Offline
Posts: 27
Joined: Sun Mar 16, 2008 10:26 pm

Post by kadvlad »

Прошу помощи в автоматизации замены цифр.
Есть построчный текст:

Code: Select all

 ... 772-786
 ... 772-786
 ... 772-786
 ... 772-786
 ... 772-786
 ... 772-786
 ... 772-786
 ... 772-786
 ... 772-786
 ... 772-786
 ... 772-786
 ... 772-786
 ... 772-786
 ... 772-786
 ... 772-786
Нужно заменить каждую строку на соотв. порядковый номер в данном диапазоне:

Code: Select all

... 772
... 773
...
... 785
... 786

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

kadvlad
SearchReplace.js

Что: ^(.*?)(\d+)-\d+$
Чем: if (typeof nInit == "undefined" || nInit != parseInt($2)) {nInit=parseInt($2); nCount=0;} return $1 + (nInit + nCount++);
[v] Регулярные выражения
[v] Многострочно
[v] Заменять на функцию

Offline
Posts: 27
Joined: Sun Mar 16, 2008 10:26 pm

Post by kadvlad »

Instructor
спасибо, работает

Offline
Posts: 1
Joined: Tue Jul 29, 2014 3:37 pm

Post by Volandqq »

Здравствуйте!
Подскажите пожалуйста как можно сделать следующее:

есть файл в котором примерно следующий текст

"
Вася собрал 67394 яблок
Вася собрал 67394 яблок
Вася собрал 67394 яблок
Вася собрал 67394 яблок
"
и так далее много строк

Подскажите как заменить число 67394 чтобы было вот так

"
Вася собрал 67394 яблок
Вася собрал 67393 яблок
Вася собрал 67392 яблок
Вася собрал 67391 яблок
Вася собрал 67390 яблок
Вася собрал 67389 яблок
"

Offline
Posts: 874
Joined: Sat Jan 16, 2010 2:03 pm

Post by opk44 »

Volandqq
Ответ на почти такой вопрос давался месяцем ранее. Читайте.
Вам только укоротить условие поиска
[Что]: ^(.*?)(\d+)
и поменять в функции плюс на минус у счетчика
[Чем]: if (typeof nInit == "undefined" || nInit != parseInt($2)) {nInit=parseInt($2); nCount=0;} return $1 + (nInit - nCount++);

Offline
Posts: 294
Joined: Tue Jul 27, 2010 11:18 pm

Post by Serge Yolkin »

Cuprum
Может, этот вариант менее корректен, но я делаю так:
что: \n+
на: \n
[x] регэксп

Offline
Posts: 366
Joined: Mon Jan 10, 2011 5:28 pm
Contact:

Post by Lenchik »

Code: Select all

; =========== "GUI Development" ===========
; --- Predefined Dialog Boxes --- 
dialog errordlg export2wsdlg helpdlg inputdlg listdlg msgbox printdlg printpreview questdlg uigetdir uigetfile 
uigetpref uiopen uiputfile uisave uisetcolor uisetfont waitbar warndlg
; --- User Interface Deployment ---
guidata guihandles movegui openfig
;   --- User Interface Development ---
addpref getappdata getpref ginput guidata guide inspect isappdata ispref rmappdata rmpref setappdata setpref uigetpref 
uisetpref waitfor waitforbuttonpress
;       --- User Interface Objects ---
menu uibuttongroup uicontextmenu uicontrol uimenu uipanel uipushtool uitable uitoggletool uitoolbar
; =========== "3-D Visualization" ===========
; --- Surface and Mesh Plots --- 
;     ... Surface and Mesh Creation ...
hidden mesh meshc meshz peaks surf surfc surface surfl tetramesh trimesh triplot trisurf

Нужно в строках не начинающихся со знака ; заменить каждое начало строки и каждый пробел на определенный текст. По сути перед словами кое что вписать. Каким регекспом это выполнить?

Offline
Posts: 294
Joined: Tue Jul 27, 2010 11:18 pm

Post by Serge Yolkin »

Lenchik

Code: Select all

(?<=[^знаки])\b([A-Za-zЁА-Яа-яё]+)
на

Code: Select all

добавляемый текст\1
?

YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

Serge Yolkin wrote:?
Так вставятся символы во все строки, а по условию, в строках где начальный символ ";", добавлять ничего не нужно. Тут без SearchReplace.js, с его возможностью добавления функции, не обойтись.

Offline
Posts: 366
Joined: Mon Jan 10, 2011 5:28 pm
Contact:

Post by Lenchik »

Действительно, не работает как надо.
какую функцию написать?

YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

Lenchik wrote: какую функцию написать?
Это надо автора попросить, чтобы помог.
Как-то пытался найти описание, но увы, либо плохо искал, либо его нет в природе... а пример использования функций, приведенный в начале самого файла, не раскрывает всех возможностей.
А так, я бы это каким-нибудь sed-ом сделал, но здесь это уже оффтоп.

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

Lenchik
SearchReplace.js ("Regular expressions", "Multiline", "Replace with function").
What:

Code: Select all

^[^;\r\n].*
With:

Code: Select all

return "ReplaceText" + arguments[0].replace(/ /g, "ReplaceText");

Offline
Posts: 366
Joined: Mon Jan 10, 2011 5:28 pm
Contact:

Post by Lenchik »

Great! Works! You saved me a lot of time making new .coder file. Thank you!
Hope i will understand someday how this magic function of you works.

YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

Lenchik wrote: Hope i will understand someday how this magic function of you works.
Да, в готовом решении от джедая уже разобраться можно, но вот как найти решение не имея описания или хотя бы примеров... действительно, на магию похоже. :)
А работает она так:
С помощью регэкспа и определенных настроек формы замены выбираются необходимые строки, из выборки исключаются пустые строки и строки без начального символа ";", затем к выборке применяется функция замены пробелов на необходимый текст.
Post Reply