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

Столкнулись с проблемой в использовании 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 »

Latest post of the previous page:

c регекспами вверху пишем коды символов внизу через контрол-ку нужный символ
без регэкспов - и внизу и в верху указываем символы через контрол ку
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

pakan wrote:и вот еще непонятно как получить однострочку, заменив переводы строки [cr-lf] на пробел(ну или табуляцию)
никак. пришлёте рабочий патч — будет.
User avatar
pakan
Posts: 5
Joined: Fri 02 Sep, 2011 14:47
Contact:

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

Post by pakan »

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 »

zg wrote:
pakan wrote:и вот еще непонятно как получить однострочку, заменив переводы строки [cr-lf] на пробел(ну или табуляцию)
никак. пришлёте рабочий патч — будет.
Содержательно, теперь все стало ясно, благодарю.
User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia
Been thanked: 2 times

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

Post by Centaur »

pakan wrote:а два (если бы и "искался") - остается необработанным еще 0x0a (как его вставить через CtrlQ неясно)
^Q^J, разумеется.
User avatar
pakan
Posts: 5
Joined: Fri 02 Sep, 2011 14:47
Contact:

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

Post by pakan »

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 »

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

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: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

Заменяйте (?<=^\d{11})31 на 44. А по поводу падения Фара - желательно репорт на мантис.
ccaid
Posts: 908
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 24 times
Been thanked: 6 times

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

Post by ccaid »

как по мне, первый вариант тоже кандидат на мантис. все написано правильно, и аналогичные (с необходимой коррекцией синтаксиса) строки работают в AkelPad, значит косяк движка регэкспов в Far.
Фар делают добрые люди
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

ccaid wrote: работают в AkelPad
Это ни о чём не говорит.
Движок регекспов - это движок поиска, а синтаксис замены не очень-то стандартизован и часто бывает разным в разных программах. В справке Фара не сказано, сколько максимально может быть групп. Я проверил, что $12, например, в Фаре работает. Поэтому, скорее всего, Фар подставил значение 144-й группы, которое равно пустой строке.
ccaid
Posts: 908
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 24 times
Been thanked: 6 times

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

Post by ccaid »

это говорит о том, что в принципе, хоть где-то, решение работает, поэтому проблему стоит поискать в фар.
Shmuel wrote: скорее всего, Фар подставил значение 144-й группы, которое равно пустой строке
фар не предоставляет средств разрешения двусмысленности, которая возникла в данном случае. и не пытается домысливать, что если в строке поиска была задана только одна группа, то в строке замены следует считать метасимоволами подстроки до $1
поэтому
ccaid wrote: как по мне, первый вариант тоже кандидат на мантис.
Фар делают добрые люди
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

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

Post by DrKnS »

ccaid wrote: если в строке поиска была задана только одна группа, то в строке замены следует считать метасимоволами подстроки до $1
Мне такой подход представляется логичным. 4470. Падать тоже уже не должно.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

DrKnS wrote:
ccaid wrote: если в строке поиска была задана только одна группа, то в строке замены следует считать метасимоволами подстроки до $1
Мне такой подход представляется логичным. 4470.
Мне такой подход представляется неправильным. Это какой-то искусственный интеллект, увязка выражения замены с выражением поиска.
На мой взгляд, выражение замены должно трактоваться всегда однозначно и независимо от выражения поиска.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

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

Post by DrKnS »

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

Если у тебя есть идеи лучше - велкам.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

DrKnS wrote: $144 в контексте не является валидной группой. Откатываемся. $14 тоже. Откатываемся. $1 является, ок.
Это и есть увязка выражения замены с выражением поиска. Что мне совсем не нравится.
DrKnS wrote: Интеллекта не намного больше, чем в \d+
\d+ ни с чем не увязан, он самодостаточен.
DrKnS wrote: А замена $144 пустой строкой - тоже интеллект. Без интеллекта надо честно лезть за границу массива и честно падать.
Это не интеллект, это - простое правило. Альтернатива - выдать сообщение об ошибке.
DrKnS wrote: Если у тебя есть идеи лучше - велкам.
Либо ограничить количество групп 36-ю, то-есть $[0-9A-Z], либо - синтаксис с фигурными скобками, на котором падало.
ccaid
Posts: 908
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 24 times
Been thanked: 6 times

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

Post by ccaid »

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

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

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