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

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

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

Postby vkh » Sat 03 Sep, 2011 10:08

Latest post of the previous page:

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

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

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

Postby 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

Postby 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

Postby 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

Postby 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

Postby 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

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

Postby 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: 4951
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 123 times

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

Postby Shmuel » Fri 11 Dec, 2015 12:27

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

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

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

Postby ccaid » Fri 11 Dec, 2015 17:50

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

Shmuel
Posts: 4951
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 123 times

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

Postby Shmuel » Fri 11 Dec, 2015 18:30

ccaid wrote:Source of the post работают в AkelPad

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

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

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

Postby ccaid » Fri 11 Dec, 2015 20:28

это говорит о том, что в принципе, хоть где-то, решение работает, поэтому проблему стоит поискать в фар.
Shmuel wrote:Source of the post скорее всего, Фар подставил значение 144-й группы, которое равно пустой строке

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

User avatar
DrKnS
Posts: 4458
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 2 times
Been thanked: 105 times
Contact:

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

Postby DrKnS » Fri 11 Dec, 2015 21:08

ccaid wrote:Source of the post если в строке поиска была задана только одна группа, то в строке замены следует считать метасимоволами подстроки до $1

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

Shmuel
Posts: 4951
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 123 times

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

Postby Shmuel » Fri 11 Dec, 2015 22:44

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

User avatar
DrKnS
Posts: 4458
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 2 times
Been thanked: 105 times
Contact:

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

Postby DrKnS » Fri 11 Dec, 2015 23:04

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

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

Shmuel
Posts: 4951
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 123 times

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

Postby Shmuel » Fri 11 Dec, 2015 23:20

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

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

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

Postby ccaid » Sat 12 Dec, 2015 07:07

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

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

Shmuel
Posts: 4951
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 123 times

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

Postby Shmuel » Sat 12 Dec, 2015 08:45

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

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


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

Who is online

Users browsing this forum: No registered users and 3 guests