Перейти к содержанию
Doctor_Che

Как использовать шаблоны при замене текста

Рекомендуемые сообщения

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

Как подставить шаблон в окошко "Заменить на"? В подсказке к регулярным выражениям сказано что надо пользоваться свойством Item [0]...[n].

 

Делаю поиск:

(L=1),\d+

Всё благополучно находится.

 

Пробовал подставлять в "Заменить на":

Item [0]

Item[0]

item[0]

Не работает... Что делаю не так?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ещё раз. Так и не работает...

image.thumb.png.f43edc69de2edebec8824643068a6798.png

Изменено пользователем Doctor_Che

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 18.10.2019 в 16:01, Doctor_Che сказал:

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

Как подставить шаблон в окошко "Заменить на"? В подсказке к регулярным выражениям сказано что надо пользоваться свойством Item [0]...[n].

 

Делаю поиск:

(L=1),\d+

Всё благополучно находится.

 

Пробовал подставлять в "Заменить на":

Item [0]

Item[0]

item[0]

Не работает... Что делаю не так?


Насколько я понимаю, регулярные выражения используются для Поиска, для получения набора искомых объектов и выражение Item[n] предназначено для извлечения результата "скобочного" поиска в самом регулярном выражении, а не в строке замены.

Или я ошибаюсь ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
15 минут назад, A.Kudrjashov сказал:

выражение Item[n] предназначено для извлечения результата "скобочного" поиска в самом регулярном выражении, а не в строке замены.

Как раз нет. "Подборы" сохраняются как раз для использования в поле замены. По крайней мере, так задумано. А как (не) реализовано - не знаю :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
21 минуту назад, Kreator сказал:

Как раз нет. "Подборы" сохраняются как раз для использования в поле замены. По крайней мере, так задумано. А как (не) реализовано - не знаю :)

Где то можно об этом хоть что-то прочитать ?
Никакой информации не нашел.

То есть предполагается, что будут найдены N объектов и заменены на один из найденных ?
Если просто заменены, то стоит ли игра свеч ?
Если элемент подбора должен использоваться как составляющая замены, то он должен быть частью "выражения замены", а об этом ничего не говорится. Как отличить текст "Item[0]" от выражения "Item[0]" ?

Изменено пользователем A.Kudrjashov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
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 ООО «Рога и копыта» не имеет дефектов, угрожающих безопасности движения.

Ищем:

.+№ (.+) ООО «(.+)»

Находим:

изображение.png

изображение.png

Вот группа 1 и группа 2 - это и есть те самые шаблоны совпадения, которые были в скобки внесены в выражении. Соответственно, при замене я могу использовать их для формирования заменяющего текста. По задумке NC должно быть так:

Путь: item[0] Владелец: ООО «item[1]»

Сервис по подбору и проверке регулярных выражений - в помощь. На английском, правда.

Изменено пользователем Kreator

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
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 сказал:

долКонечно можно почитать - поиск по сочетанию Регулярные выражения. А суть этой фишки в том, что вы можете искать целую строку по её части, и заменять не всё, а только фрагменты. Причём, фрагменты могут быть найдены не статические, а именно по шаблону.

Пример:

Ищем:


.+№ (.+) ООО «(.+)»

Находим:

изображение.png

изображение.png

Вот группа 1 и группа 2 - это и есть те самые шаблоны совпадения, которые были в скобки внесены в выражении. Соответственно, при замене я могу использовать их для формирования заменяющего текста. По задумке NC должно быть так:

Путь: item[0] Владелец: ООО «item[1]»

Сервис по подбору и проверке регулярных выражений - в помощь. На английском, правда.


То есть, наличие в строке замены Item[n] автоматически должно быть командой использования соответствующей группы для подстановки в строку замены ?

Но регулярное выражение применяется для каждого экземпляра массива текстов. То есть, предполагается, что для каждой строки, удовлетворяющей условиям поиска должны быть сформированы свои "группы" и затем "по умолчанию", в случае наличия "item[n]", использоваться для формирования замены в данной конкретной найденной строке ?

Все верно ?
-------------------------------
То есть в начальном сообщении речь шла о том, чтобы заменить все найденные строки содержимым "до запятой" ?

P.S. И все таки. Где почитать ? Не о регулярных выражениях, с ними все понятно, а об их интерпретации в nanoCAD ?
Где то есть официальное упоминание о том, как "все задумано" ?

Изменено пользователем A.Kudrjashov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, A.Kudrjashov сказал:

... у буржуев тоже ничего не получается
http://forum.nanocad.com/index.php?/topic/639-regular-expressions-find-an-replace/

Да, видел этот пост.

48 минут назад, A.Kudrjashov сказал:

То есть в начальном сообщении речь шла о том, чтобы заменить все найденные строки содержимым "до запятой" ?

Да, была идея таким образом избавиться от дробной части.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
49 минут назад, A.Kudrjashov сказал:

То есть, наличие в строке замены Item[n] автоматически должно быть командой использования соответствующей группы для подстановки в строку замены ?

Но регулярное выражение применяется для каждого экземпляра массива текстов. То есть, предполагается, что для каждой строки, удовлетворяющей условиям поиска должны быть сформированы свои "группы" и затем "по умолчанию", в случае наличия "item[n]", использоваться для формирования замены в данной конкретной найденной строке ?

Все верно ?

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

50 минут назад, A.Kudrjashov сказал:

И все таки. Где почитать ? Не о регулярных выражениях, с ними все понятно, а об их интерпретации в nanoCAD ?
Где то есть официальное упоминание о том, как "все задумано" ?

Похоже, что нигде. В указанном англоязычном форуме указано, что функция не реализована. Видимо, ещё не реализована в связи с малым спросом на неё.

Но давайте подождём авторитетное мнение разработчика :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Задал этот вопрос в ООО "Нормасофт".

Ответ такой: "это проблемы именно с платформой, которая у вас установлена. Те такого не должно быть."

 

Кто-нибудь в голом нанокаде может проверить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
22 минуты назад, Doctor_Che сказал:

Задал этот вопрос в ООО "Нормасофт".

Ответ такой: "это проблемы именно с платформой, которая у вас установлена. Те такого не должно быть."

 

Кто-нибудь в голом нанокаде может проверить?


Только что проверил в голом NanoCAD Plus ...
image.png.9e4d2cab98f651c209a008f3b8f57765.png

 

image.png.9c852a0d9a7155f803f1d27d5d8085d7.png

 

image.png.3d025d7a65e6b8a9799f04ffd62a8ebf.png


... может я что-то не так делаю ?

P.S. Пробовал, как писали буржуи, все варианты: $n, ($n), item[n]. Item[n], [n], ....

Изменено пользователем A.Kudrjashov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Получил ответ от ООО "Нормасофт". Говорят что разработчики им ответили так: "функция на данный момент не реализована, возможно появится в 2020 г".

Жаль что разработчики игнорируют форум и приходится общаться через третьих лиц...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
41 минуту назад, Kreator сказал:

Поиск - да, замена - не до конца :)

Не представляю, как данным алгоритмом можно реализовать замену.

 

Спойлер

Вообще странно искать в "графической платформе" функционал полноценной ИПС.  Насколько я знаю подобные запросы настраиваются вручную в более серьёзных решателях чем этот

Скорее это задача не платформы , в "Встроенного нормоконтроля"

Цитата

Интеграция NormaCS 4.х с nanoCAD Plus, ведущей отечественной САПР-платформой, позволяет автоматизировать нормоконтроль проектной документации:

  • автоматический поиск всех норм и стандартов, используемых в проекте;
  • создание отчета – списка найденных документов с указанием статуса («Действует», «Не действует», «Частично действует»);
  • подбор заменяющих документов;9[1].jpg
  • исправление данных одним нажатием кнопки.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
47 минут назад, MCAD сказал:

Не представляю, как данным алгоритмом можно реализовать замену.

 

  Хм... (Показать контент)

Вообще странно искать в "графической платформе" функционал полноценной ИПС.  Насколько я знаю подобные запросы настраиваются вручную в более серьёзных решателях чем этот

Скорее это задача не платформы , в "Встроенного нормоконтроля"

 

Это же обычные регулярные выражения. Функция заявлена и даже указано как пользоваться - только не работает...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...

×
×
  • Создать...