FAR3: RegExp — регулярные выражения

Хотите говорить о Far и не знаете, куда обратиться?
Shmuel
Posts: 6166
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 329 times

Re: FAR3: RegExp — регулярные выражения

Post by Shmuel »

Latest post of the previous page:

t-rex wrote:$ это спец символ, поэтому один $ без доп символа это ошибка синтакса, но так как мы не выдаём сообщ. о таком то он просто игнорируется. так и задумано.
Суть предложения о замене $ (как символа экранирования) на \ в том, что \ - это как бы стандарт, и чтобы не было разнобоя между Фаром и большинством плагинов. На данный момент, $ как символ экранирования используется в Фаре и EdtFind, а \ как символ экранирования используется в S&R, RESearch и LF Search.

Использование \ как символа экранирования практически повсеместно. В частности, строка замены сможет содержать общепринятые сочетания типа \t, \n, \xHH и т.д. Сейчас их можно вставить только посредством CtrlQ, что является спецификой Фара, т.е. не стандартно, да и визуально не радует:

Code: Select all

foo♪bar   baz
Глянув на такую строку, не поймёшь, что bar и baz разделены табом.
2useven10
Posts: 4072
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 5 times
Been thanked: 189 times

Re: FAR3: RegExp — регулярные выражения

Post by 2useven10 »

$n - как в перл (похоже на перл), и это не совсем символ экранирования.
\ в перл является символом экранирования, проблема только в том, что в фар это не реализовано.
Shmuel
Posts: 6166
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 329 times

Re: FAR3: RegExp — регулярные выражения

Post by Shmuel »

2useven10 wrote:$n - как в перл (похоже на перл), и это не совсем символ экранирования.
$n не предлагается трогать/изменять. Имеется в виду следующее:
Help wrote:

Code: Select all

$* is replaced with '*' character.
Это и есть экранирование.
2useven10
Posts: 4072
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 5 times
Been thanked: 189 times

Re: FAR3: RegExp — регулярные выражения

Post by 2useven10 »

я и не говорю, что это совсем не символ экранирования.
имхо, $ надо или оставить как есть, или не использовать вообще (дело вкуса - можно опцию).
это не проблема. не хватает как раз возможностей экранирования через \, вот это было бы полезно,
на форуме и багтрекере уже несколько раз тема поднималась, свободную энергию лучше направить сюда :)
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: FAR3: RegExp — регулярные выражения

Post by AleXH »

Неправильно обрабатываются регулярки, начинающиеся с ^ , например:
Искать: ^\w+?\x20
Заменить на: пусто
Будет "пожирать" слово за словом в строке. RESearch, начиная с 8.01, перл и луа заменяют только первое слово в строке и это правильно, так как указано его размещение. Если мы хотим удалять слово за словом без привязки к расположению, то пишем просто \w+?\x20. Такое поведение более интуитивно и ожидаемо.
User avatar
t-rex
Страшный и ужасный
Posts: 4907
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 6 times
Contact:

Re: FAR3: RegExp — регулярные выражения

Post by t-rex »

У меня ничего не пожирает.
User avatar
HaRT
Moderator
Posts: 9527
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 109 times
Been thanked: 228 times

Re: FAR3: RegExp — регулярные выражения

Post by HaRT »

t-rex wrote:У меня ничего не пожирает.
Очевидно, AleXH имеет в виду замену в редакторе.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6166
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 329 times

Re: FAR3: RegExp — регулярные выражения

Post by Shmuel »

t-rex wrote:У меня ничего не пожирает.
Пожирает. Можно более простой пример: заменить ^. на пустую строку. Съест все символы в файле, кроме перевода строк.
User avatar
hobo
Posts: 28
Joined: Sun 21 Mar, 2010 08:17

Re: FAR3: RegExp — регулярные выражения

Post by hobo »

AleXH wrote: Искать: ^\w+?\x20
Заменить на: пусто
Будет "пожирать" слово за словом в строке.
Наверно, потому что второе слово после удаления первого становится первым? Тогда заменять на пробел. И зачем в выражении два квантификатора -- '+' и '?'? Можно же проще написать: ^\w+\s.
User avatar
John Doe
Бюрократ
Posts: 12872
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 293 times

Re: FAR3: RegExp — регулярные выражения

Post by John Doe »

hobo wrote:И зачем в выражении два квантификатора -- '+' и '?'? Можно же проще написать: ^\w+\s.
Зачем -- можно почитать в справке.
А так ваше 'простое' выражение не соответствует 'сложному'.
User avatar
hobo
Posts: 28
Joined: Sun 21 Mar, 2010 08:17

Re: FAR3: RegExp — регулярные выражения

Post by hobo »

John Doe wrote:Зачем -- можно почитать в справке.
А так ваше 'простое' выражение не соответствует 'сложному'.
Сорри. Забыл про "нежадный" поиск. А так, пробел и так не является "символом слова", и "нежадный" поиск здесь излишен. ИМХО.
User avatar
John Doe
Бюрократ
Posts: 12872
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 293 times

Re: FAR3: RegExp — регулярные выражения

Post by John Doe »

В этом вы правы.
Кроме того \s это не только пробел
Post Reply

Return to “Обсуждение Far Manager”