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

Столкнулись с проблемой в использовании Far? Здесь можно получить помощь.
User avatar
John Doe
Бюрократ
Posts: 12648
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 35 times
Been thanked: 270 times

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

Post by John Doe »

Latest post of the previous page:

FarRus.hlf wrote:

Code: Select all

   #Ctrl-Q#                  ^<wrap>Рассматривать следующую комбинацию клавиш как код символа

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

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

Post by pakan »

с Ctrl-Q - работает, благодарю!


а подскажите как заменять:

Code: Select all

/\s+/
на

Code: Select all

\r\n
?

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

Code: Select all

\r\n
на

Code: Select all

\t
?

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 »

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

User avatar
zg
zero-gravity
Posts: 5710
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 134 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: 6028
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 26 times
Been thanked: 289 times

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

Post by Shmuel »

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

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

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

Post by ccaid »

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

Shmuel
Posts: 6028
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 26 times
Been thanked: 289 times

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

Post by Shmuel »

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

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

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

Post by ccaid »

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

User avatar
DrKnS
Posts: 5518
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 6 times
Been thanked: 280 times

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

Post by DrKnS »

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

Shmuel
Posts: 6028
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 26 times
Been thanked: 289 times

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

Post by Shmuel »

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

User avatar
DrKnS
Posts: 5518
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 6 times
Been thanked: 280 times

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

Post by DrKnS »

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

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

Post Reply

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