Встроенные редактор и просмотрщик — поиск и замена

Столкнулись с проблемой в использовании Far? Здесь можно получить помощь.
User avatar
vkh
Posts: 226
Joined: Fri 13 Nov, 2009 07:48
Has thanked: 2 times
Been thanked: 1 time

Re: Вопрос по спецсимволам в строке замены в редакотре far2

Post by vkh » Sat 03 Sep, 2011 10:08

Latest post of the previous page:

c регекспами вверху пишем коды символов внизу через контрол-ку нужный символ
без регэкспов - и внизу и в верху указываем символы через контрол ку

User avatar
zg
zero-gravity
Posts: 5266
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 44 times
Contact:

Re: Вопрос по спецсимволам в строке замены в редакотре far2

Post by zg » Sat 03 Sep, 2011 10:34

pakan wrote:и вот еще непонятно как получить однострочку, заменив переводы строки [cr-lf] на пробел(ну или табуляцию)
никак. пришлёте рабочий патч — будет.

User avatar
pakan
Posts: 5
Joined: Fri 02 Sep, 2011 14:47
Contact:

Re: Вопрос по спецсимволам в строке замены в редакотре far2

Post by pakan » Sun 04 Sep, 2011 08:08

vkh wrote:c регекспами вверху пишем коды символов внизу через контрол-ку нужный символ
без регэкспов - и внизу и в верху указываем символы через контрол ку
в строке поиска коды символов 0x0a равно как и 0x0d в нотации

Code: Select all

 \xNNNN - hex character, where N - [0-9A-Fa-f]
не работают :(

без регекспов:
CtrlQ Enter - вставит в строку поиска символ с кодом 0x0d (cr) (музыкальный такой)
который в тексте не ищется - это раз
а два (если бы и "искался") - остается необработанным еще 0x0a (как его вставить через CtrlQ неясно)

User avatar
pakan
Posts: 5
Joined: Fri 02 Sep, 2011 14:47
Contact:

Re: Вопрос по спецсимволам в строке замены в редакотре far2

Post by pakan » Sun 04 Sep, 2011 08:10

zg wrote:
pakan wrote:и вот еще непонятно как получить однострочку, заменив переводы строки [cr-lf] на пробел(ну или табуляцию)
никак. пришлёте рабочий патч — будет.
Содержательно, теперь все стало ясно, благодарю.

User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia

Re: Вопрос по спецсимволам в строке замены в редакотре far2

Post by Centaur » Sun 04 Sep, 2011 13:47

pakan wrote:а два (если бы и "искался") - остается необработанным еще 0x0a (как его вставить через CtrlQ неясно)
^Q^J, разумеется.

User avatar
pakan
Posts: 5
Joined: Fri 02 Sep, 2011 14:47
Contact:

Re: Вопрос по спецсимволам в строке замены в редакотре far2

Post by pakan » Tue 06 Sep, 2011 16:48

Centaur wrote:
pakan wrote:а два (если бы и "искался") - остается необработанным еще 0x0a (как его вставить через CtrlQ неясно)
^Q^J, разумеется.
^Q^J - вставляет то что нужно,

жаль, что такой символ тоже не ищется. Тем не менее такой подход можно с успехом пользовать для строки замены.
Благодарю!

User avatar
vkh
Posts: 226
Joined: Fri 13 Nov, 2009 07:48
Has thanked: 2 times
Been thanked: 1 time

Встроенные редактор и просмотрщик — поиск и замена

Post by vkh » Fri 11 Dec, 2015 12:06

друзья, подскажите, пожалуйста, есть ли способ сделать замену текста в структурированном файле:

Code: Select all

00000000001990000000000000
01000000002319031470000000
01000000003318646470000000
01000000004318557470000000
01000000005318616470000000
01000000006318615470000000
99000000007990000000000000
мне нужно заменить циферки "31" в 12-й позиции на циферки "44".

если я делаю замену

Code: Select all

^(\d{11})31
$144
то предлагается заменить первые 13 символов на пусто.

если делать замену

Code: Select all

^(\d{11})31
${1}44
то FAR падает

пока вижу обходной путь менять

Code: Select all

^(\d{11})31
$1-удалименя-44
а потом удалять "-удалименя-", но, может, есть правильный способ?

Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

Встроенные редактор и просмотрщик — поиск и замена

Post by Shmuel » Fri 11 Dec, 2015 12:27

Заменяйте (?<=^\d{11})31 на 44. А по поводу падения Фара - желательно репорт на мантис.

ccaid
Posts: 805
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 9 times
Been thanked: 5 times

Встроенные редактор и просмотрщик — поиск и замена

Post by ccaid » Fri 11 Dec, 2015 17:50

как по мне, первый вариант тоже кандидат на мантис. все написано правильно, и аналогичные (с необходимой коррекцией синтаксиса) строки работают в AkelPad, значит косяк движка регэкспов в Far.
Фар делают добрые люди

Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

Встроенные редактор и просмотрщик — поиск и замена

Post by Shmuel » Fri 11 Dec, 2015 18:30

ccaid wrote: работают в AkelPad
Это ни о чём не говорит.
Движок регекспов - это движок поиска, а синтаксис замены не очень-то стандартизован и часто бывает разным в разных программах. В справке Фара не сказано, сколько максимально может быть групп. Я проверил, что $12, например, в Фаре работает. Поэтому, скорее всего, Фар подставил значение 144-й группы, которое равно пустой строке.

ccaid
Posts: 805
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 9 times
Been thanked: 5 times

Встроенные редактор и просмотрщик — поиск и замена

Post by ccaid » Fri 11 Dec, 2015 20:28

это говорит о том, что в принципе, хоть где-то, решение работает, поэтому проблему стоит поискать в фар.
Shmuel wrote: скорее всего, Фар подставил значение 144-й группы, которое равно пустой строке
фар не предоставляет средств разрешения двусмысленности, которая возникла в данном случае. и не пытается домысливать, что если в строке поиска была задана только одна группа, то в строке замены следует считать метасимоволами подстроки до $1
поэтому
ccaid wrote: как по мне, первый вариант тоже кандидат на мантис.
Фар делают добрые люди

User avatar
DrKnS
Posts: 4626
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 123 times
Contact:

Встроенные редактор и просмотрщик — поиск и замена

Post by DrKnS » Fri 11 Dec, 2015 21:08

ccaid wrote: если в строке поиска была задана только одна группа, то в строке замены следует считать метасимоволами подстроки до $1
Мне такой подход представляется логичным. 4470. Падать тоже уже не должно.

Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

Встроенные редактор и просмотрщик — поиск и замена

Post by Shmuel » Fri 11 Dec, 2015 22:44

DrKnS wrote:
ccaid wrote: если в строке поиска была задана только одна группа, то в строке замены следует считать метасимоволами подстроки до $1
Мне такой подход представляется логичным. 4470.
Мне такой подход представляется неправильным. Это какой-то искусственный интеллект, увязка выражения замены с выражением поиска.
На мой взгляд, выражение замены должно трактоваться всегда однозначно и независимо от выражения поиска.

User avatar
DrKnS
Posts: 4626
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 123 times
Contact:

Встроенные редактор и просмотрщик — поиск и замена

Post by DrKnS » Fri 11 Dec, 2015 23:04

$144 в контексте не является валидной группой. Откатываемся. $14 тоже. Откатываемся. $1 является, ок.
Интеллекта не намного больше, чем в \d+
А замена $144 пустой строкой - тоже интеллект. Без интеллекта надо честно лезть за границу массива и честно падать.

Если у тебя есть идеи лучше - велкам.

Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

Встроенные редактор и просмотрщик — поиск и замена

Post by Shmuel » Fri 11 Dec, 2015 23:20

DrKnS wrote: $144 в контексте не является валидной группой. Откатываемся. $14 тоже. Откатываемся. $1 является, ок.
Это и есть увязка выражения замены с выражением поиска. Что мне совсем не нравится.
DrKnS wrote: Интеллекта не намного больше, чем в \d+
\d+ ни с чем не увязан, он самодостаточен.
DrKnS wrote: А замена $144 пустой строкой - тоже интеллект. Без интеллекта надо честно лезть за границу массива и честно падать.
Это не интеллект, это - простое правило. Альтернатива - выдать сообщение об ошибке.
DrKnS wrote: Если у тебя есть идеи лучше - велкам.
Либо ограничить количество групп 36-ю, то-есть $[0-9A-Z], либо - синтаксис с фигурными скобками, на котором падало.

ccaid
Posts: 805
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 9 times
Been thanked: 5 times

Встроенные редактор и просмотрщик — поиск и замена

Post by ccaid » Sat 12 Dec, 2015 07:07

Shmuel wrote: выражение замены должно трактоваться всегда однозначно и независимо от выражения поиска
слишком сильное утверждение. в выражении замены мы переупорядочиваем/переоформляем то, что нашли выражением поиска. как они могут быть независимы. что это за выражение замены, которое не зависит от количества групп в выражении поиска?

PS. кстати, в AkelPad эта проблема решается ограничением количества цифр в номере группы двумя. поэтому пишем \01, и дело в шляпе.
Фар делают добрые люди

Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

Встроенные редактор и просмотрщик — поиск и замена

Post by Shmuel » Sat 12 Dec, 2015 08:45

ccaid wrote: что это за выражение замены, которое не зависит от количества групп в выражении поиска?
Вы смешиваете два разных понятия: выражение замены и результат замены.
Выражение замены не должно, на мой взгляд, зависеть от выражения поиска, то-есть обозначения номеров групп в нём должны всегда трактоваться как фиксированные числа, а не алгоритмом 144 -> 14 -> 1.

Синтаксис при этом может быть разным. Вот, например, как это сделано в Visual Studio.

Post Reply

Return to “Нужна помощь”