Doctor_Che Posted October 18, 2019 Report Share Posted October 18, 2019 Пытаюсь сделать замену текста через "Найти и заменить" с использованием регулярных выражений. Как подставить шаблон в окошко "Заменить на"? В подсказке к регулярным выражениям сказано что надо пользоваться свойством Item [0]...[n]. Делаю поиск: (L=1),\d+ Всё благополучно находится. Пробовал подставлять в "Заменить на": Item [0] Item[0] item[0] Не работает... Что делаю не так? 1 Quote Link to comment Share on other sites More sharing options...
Doctor_Che Posted October 31, 2019 Author Report Share Posted October 31, 2019 Товарищи разработчики, ответьте. Quote Link to comment Share on other sites More sharing options...
Doctor_Che Posted November 6, 2019 Author Report Share Posted November 6, 2019 (edited) Ещё раз. Так и не работает... Edited November 6, 2019 by Doctor_Che Quote Link to comment Share on other sites More sharing options...
A.Kudrjashov Posted November 6, 2019 Report Share Posted November 6, 2019 В 18.10.2019 в 16:01, Doctor_Che сказал: Пытаюсь сделать замену текста через "Найти и заменить" с использованием регулярных выражений. Как подставить шаблон в окошко "Заменить на"? В подсказке к регулярным выражениям сказано что надо пользоваться свойством Item [0]...[n]. Делаю поиск: (L=1),\d+ Всё благополучно находится. Пробовал подставлять в "Заменить на": Item [0] Item[0] item[0] Не работает... Что делаю не так? Насколько я понимаю, регулярные выражения используются для Поиска, для получения набора искомых объектов и выражение Item[n] предназначено для извлечения результата "скобочного" поиска в самом регулярном выражении, а не в строке замены. Или я ошибаюсь ? Quote Link to comment Share on other sites More sharing options...
Kreator Posted November 6, 2019 Report Share Posted November 6, 2019 15 минут назад, A.Kudrjashov сказал: выражение Item[n] предназначено для извлечения результата "скобочного" поиска в самом регулярном выражении, а не в строке замены. Как раз нет. "Подборы" сохраняются как раз для использования в поле замены. По крайней мере, так задумано. А как (не) реализовано - не знаю Quote Link to comment Share on other sites More sharing options...
A.Kudrjashov Posted November 6, 2019 Report Share Posted November 6, 2019 (edited) 21 минуту назад, Kreator сказал: Как раз нет. "Подборы" сохраняются как раз для использования в поле замены. По крайней мере, так задумано. А как (не) реализовано - не знаю Где то можно об этом хоть что-то прочитать ? Никакой информации не нашел. То есть предполагается, что будут найдены N объектов и заменены на один из найденных ? Если просто заменены, то стоит ли игра свеч ? Если элемент подбора должен использоваться как составляющая замены, то он должен быть частью "выражения замены", а об этом ничего не говорится. Как отличить текст "Item[0]" от выражения "Item[0]" ? Edited November 6, 2019 by A.Kudrjashov Quote Link to comment Share on other sites More sharing options...
Doctor_Che Posted November 6, 2019 Author Report Share Posted November 6, 2019 9 минут назад, A.Kudrjashov сказал: Где то можно об этом хоть что-то прочитать ? Никакой информации не нашел. Вот пример использования. Синтаксис от Python, но идея та же: по номеру группы извлекать нужную часть строки. >>> p = re.compile('(a(b)c)d') >>> m = p.match('abcd') >>> m.group(0) 'abcd' >>> m.group(1) 'abc' >>> m.group(2) 'b' 1 Quote Link to comment Share on other sites More sharing options...
Kreator Posted November 6, 2019 Report Share Posted November 6, 2019 (edited) Конечно можно почитать - поиск по сочетанию Регулярные выражения. А суть этой фишки в том, что вы можете искать целую строку по её части, и заменять не всё, а только фрагменты. Причём, фрагменты могут быть найдены не статические, а именно по шаблону. Пример: Цитата Железнодорожный путь № 1 ООО «Рога и копыта» не имеет дефектов, угрожающих безопасности движения. Ищем: .+№ (.+) ООО «(.+)» Находим: Вот группа 1 и группа 2 - это и есть те самые шаблоны совпадения, которые были в скобки внесены в выражении. Соответственно, при замене я могу использовать их для формирования заменяющего текста. По задумке NC должно быть так: Путь: item[0] Владелец: ООО «item[1]» Сервис по подбору и проверке регулярных выражений - в помощь. На английском, правда. Edited November 6, 2019 by Kreator 1 Quote Link to comment Share on other sites More sharing options...
A.Kudrjashov Posted November 6, 2019 Report Share Posted November 6, 2019 (edited) 36 минут назад, Doctor_Che сказал: Вот пример использования. Синтаксис от Python, но идея та же: по номеру группы извлекать нужную часть строки. >>> p = re.compile('(a(b)c)d') >>> m = p.match('abcd') >>> m.group(0) 'abcd' >>> m.group(1) 'abc' >>> m.group(2) 'b' С идеей использования групп результатов поиска все понятно. Идея хорошая. Каков синтаксис использования групп результата в строке подстановки ? Должно быть что-то отличающее оператор Item[0] от литерала "Item[0]". 30 минут назад, Kreator сказал: долКонечно можно почитать - поиск по сочетанию Регулярные выражения. А суть этой фишки в том, что вы можете искать целую строку по её части, и заменять не всё, а только фрагменты. Причём, фрагменты могут быть найдены не статические, а именно по шаблону. Пример: Ищем: .+№ (.+) ООО «(.+)» Находим: Вот группа 1 и группа 2 - это и есть те самые шаблоны совпадения, которые были в скобки внесены в выражении. Соответственно, при замене я могу использовать их для формирования заменяющего текста. По задумке NC должно быть так: Путь: item[0] Владелец: ООО «item[1]» Сервис по подбору и проверке регулярных выражений - в помощь. На английском, правда. То есть, наличие в строке замены Item[n] автоматически должно быть командой использования соответствующей группы для подстановки в строку замены ? Но регулярное выражение применяется для каждого экземпляра массива текстов. То есть, предполагается, что для каждой строки, удовлетворяющей условиям поиска должны быть сформированы свои "группы" и затем "по умолчанию", в случае наличия "item[n]", использоваться для формирования замены в данной конкретной найденной строке ? Все верно ? ------------------------------- То есть в начальном сообщении речь шла о том, чтобы заменить все найденные строки содержимым "до запятой" ? P.S. И все таки. Где почитать ? Не о регулярных выражениях, с ними все понятно, а об их интерпретации в nanoCAD ? Где то есть официальное упоминание о том, как "все задумано" ? Edited November 6, 2019 by A.Kudrjashov Quote Link to comment Share on other sites More sharing options...
A.Kudrjashov Posted November 6, 2019 Report Share Posted November 6, 2019 ... у буржуев тоже ничего не получаетсяhttp://forum.nanocad.com/index.php?/topic/639-regular-expressions-find-an-replace/ Quote Link to comment Share on other sites More sharing options...
Doctor_Che Posted November 6, 2019 Author Report Share Posted November 6, 2019 1 минуту назад, A.Kudrjashov сказал: ... у буржуев тоже ничего не получаетсяhttp://forum.nanocad.com/index.php?/topic/639-regular-expressions-find-an-replace/ Да, видел этот пост. 48 минут назад, A.Kudrjashov сказал: То есть в начальном сообщении речь шла о том, чтобы заменить все найденные строки содержимым "до запятой" ? Да, была идея таким образом избавиться от дробной части. 1 Quote Link to comment Share on other sites More sharing options...
Kreator Posted November 6, 2019 Report Share Posted November 6, 2019 49 минут назад, A.Kudrjashov сказал: То есть, наличие в строке замены Item[n] автоматически должно быть командой использования соответствующей группы для подстановки в строку замены ? Но регулярное выражение применяется для каждого экземпляра массива текстов. То есть, предполагается, что для каждой строки, удовлетворяющей условиям поиска должны быть сформированы свои "группы" и затем "по умолчанию", в случае наличия "item[n]", использоваться для формирования замены в данной конкретной найденной строке ? Все верно ? Вероятно. За то, что предполагалось, я не могу отвечать, я с разработчиками никак не связан. 50 минут назад, A.Kudrjashov сказал: И все таки. Где почитать ? Не о регулярных выражениях, с ними все понятно, а об их интерпретации в nanoCAD ? Где то есть официальное упоминание о том, как "все задумано" ? Похоже, что нигде. В указанном англоязычном форуме указано, что функция не реализована. Видимо, ещё не реализована в связи с малым спросом на неё. Но давайте подождём авторитетное мнение разработчика 1 Quote Link to comment Share on other sites More sharing options...
Doctor_Che Posted November 6, 2019 Author Report Share Posted November 6, 2019 Задал этот вопрос в ООО "Нормасофт". Ответ такой: "это проблемы именно с платформой, которая у вас установлена. Те такого не должно быть." Кто-нибудь в голом нанокаде может проверить? Quote Link to comment Share on other sites More sharing options...
A.Kudrjashov Posted November 6, 2019 Report Share Posted November 6, 2019 (edited) 22 минуты назад, Doctor_Che сказал: Задал этот вопрос в ООО "Нормасофт". Ответ такой: "это проблемы именно с платформой, которая у вас установлена. Те такого не должно быть." Кто-нибудь в голом нанокаде может проверить? Только что проверил в голом NanoCAD Plus ... ... может я что-то не так делаю ? P.S. Пробовал, как писали буржуи, все варианты: $n, ($n), item[n]. Item[n], [n], .... Edited November 6, 2019 by A.Kudrjashov Quote Link to comment Share on other sites More sharing options...
Kreator Posted November 6, 2019 Report Share Posted November 6, 2019 Про голый nanoCAD 11.0 и идёт речь. Quote Link to comment Share on other sites More sharing options...
Doctor_Che Posted November 7, 2019 Author Report Share Posted November 7, 2019 Получил ответ от ООО "Нормасофт". Говорят что разработчики им ответили так: "функция на данный момент не реализована, возможно появится в 2020 г". Жаль что разработчики игнорируют форум и приходится общаться через третьих лиц... 1 Quote Link to comment Share on other sites More sharing options...
MCAD Posted November 7, 2019 Report Share Posted November 7, 2019 поиск работает? Quote Link to comment Share on other sites More sharing options...
Kreator Posted November 7, 2019 Report Share Posted November 7, 2019 Поиск - да, замена - не до конца 1 Quote Link to comment Share on other sites More sharing options...
Doctor_Che Posted November 7, 2019 Author Report Share Posted November 7, 2019 47 минут назад, MCAD сказал: Не представляю, как данным алгоритмом можно реализовать замену. Хм... (Показать контент) Вообще странно искать в "графической платформе" функционал полноценной ИПС. Насколько я знаю подобные запросы настраиваются вручную в более серьёзных решателях чем этот Скорее это задача не платформы , в "Встроенного нормоконтроля" Это же обычные регулярные выражения. Функция заявлена и даже указано как пользоваться - только не работает... 2 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.