| View previous topic :: View next topic |
| Author |
Message |
Infocatcher
Joined: 06 Aug 2007 Posts: 1440
|
Posted: Tue Apr 10, 2012 11:16 pm Post subject: |
|
|
| Instructor wrote: | | Почему конструкция "[\s\S]*" должна остановится на кавычке? | Не знаю. Но в js находит.
Вон даже на википедии примеры с <.*> что-то находят.
А у нас пока что вот такое.
Берем SearchReplace.js и некий текст, заканчивающийся на q.
[\s\S]*q – найдет весь текст
[\s\S]*?q – найдет весь текст до первой «q» |
|
| Back to top |
|
 |
Infocatcher
Joined: 06 Aug 2007 Posts: 1440
|
Posted: Wed Apr 11, 2012 5:32 am Post subject: |
|
|
| Нечто про «почему» можно почитать тут: http://pcre.org/pcre.txt («THE STANDARD MATCHING ALGORITHM»), только форма изложения что-то не фонтан. |
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4680
|
Posted: Wed Apr 11, 2012 5:42 am Post subject: |
|
|
Infocatcher
Конструкция по логике "[\s\S]*" это аналог ".*", но текущая реализация особо обрабатывает только ".*", но не "[\s\S]*".
| Quote: | | Вон даже на википедии примеры с <.*> что-то находят. | ".*" должен обрабатывается как положено. |
|
| Back to top |
|
 |
Infocatcher
Joined: 06 Aug 2007 Posts: 1440
|
Posted: Wed Apr 11, 2012 5:53 am Post subject: |
|
|
| Instructor wrote: | | Конструкция по логике "[\s\S]*" это аналог ".*" | Вообще, .* не находит переводы строк.
Другое дело, что сейчас вообще ничего не находит переводы строк.
Вдобавок могут быть вариации с [^нечто]*
Кстати, .* работает не как положено, а как .*?  |
|
| Back to top |
|
 |
Infocatcher
Joined: 06 Aug 2007 Posts: 1440
|
Posted: Wed Apr 11, 2012 6:02 am Post subject: |
|
|
| Пожелание: к поддержке $1, $2, ... добавить $& для вставки при замене всей найденной подстроки. |
|
| Back to top |
|
 |
FeyFre
Joined: 07 Aug 2007 Posts: 1907 Location: Vinnitsa, Ukraine
|
Posted: Wed Apr 11, 2012 7:16 am Post subject: |
|
|
| Quote: | | Конструкция по логике "[\s\S]*" это аналог ".*", но текущая реализация особо обрабатывает только ".*", но не "[\s\S]*". | Как-то получается баговато. Идентичные регулярные выражения должни найти одинаковый текст. Хотя нужно уточнить насчет "сравниваемости" этих выражений, но должны считаться идентичными. Да и "жадность" какая-то неопределенная: то * жадная, то не жадная. |
|
| Back to top |
|
 |
Infocatcher
Joined: 06 Aug 2007 Posts: 1440
|
Posted: Wed Apr 11, 2012 7:44 am Post subject: |
|
|
Не работает нежадный поиск вида
.{3,}?
Находит всю строку вместо трех символов:
.{2,3} |
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4680
|
Posted: Wed Apr 11, 2012 1:52 pm Post subject: |
|
|
| FeyFre wrote: | | Как-то получается баговато... | Значит есть куда стремиться  |
|
| Back to top |
|
 |
LEN
Joined: 21 Aug 2008 Posts: 23
|
Posted: Wed Apr 11, 2012 8:15 pm Post subject: |
|
|
Перестал понимать что-либо!
Пытаюсь через Поиск и Замену добавить в конец всех строк свой текст:
Что: (.*)
Чем: $1_текст
[v] Регулярные выражения
(*) С начала
А вместо этого получаю:
$1_текст
Что я делаю не так? |
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4680
|
Posted: Thu Apr 12, 2012 1:21 am Post subject: |
|
|
LEN
Сейчас при использовании регулярных выражений замена работает по всему тексту, а поиск построчный. |
|
| Back to top |
|
 |
LEN
Joined: 21 Aug 2008 Posts: 23
|
Posted: Thu Apr 12, 2012 8:35 pm Post subject: |
|
|
Instructor
Писк-то находит, но почему не заменяет? |
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4680
|
Posted: Fri Apr 13, 2012 10:41 pm Post subject: |
|
|
| Infocatcher wrote: | Кстати, .* работает не как положено, а как .*?  | Если будет яснее, то как положено ... автором.
| Quote: | | Пожелание: к поддержке $1, $2, ... добавить $& для вставки при замене всей найденной подстроки. | Реализовано. Помимо "$&", "$0" действует аналогичным образом.
| Quote: | Не работает нежадный поиск вида
.{3,}? | В текущей реализации нету разделения на нежадный/жадный. Конструкции ".*", ".{3,}" и т.п. всегда "нежадные".
| Quote: | Находит всю строку вместо трех символов:
.{2,3} |
| Quote: | ^\d -> -
срежет все цифры в начале текста, а должно только первую. |
| Quote: | | 4. При замене не поддерживается запоминание содержимого скобок. |
| LEN wrote: | | Писк-то находит, но почему не заменяет? |
Тестовая |
|
| Back to top |
|
 |
Eugeny
Joined: 17 Jan 2009 Posts: 2
|
Posted: Wed Apr 25, 2012 9:30 am Post subject: |
|
|
Если в редакторе включён режим переноса длинных строк, то при замене "(.*)" на "$&_текст" происходит замена на каждой отображаемой строке, а не на каждой реальной.
Я так понял, замена происходит только для тех случаев, когда паттерн соответствует целой строке. Например замена паттерна "^.+=" на "$&_текст" не происходит, и не происходит вообще ничего, никакой реакции программы. Проверить можно на примере любого ini файла. |
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4680
|
Posted: Thu May 03, 2012 6:24 pm Post subject: |
|
|
На sourceforge какие-то проблемы с сайтом - выпустить релиз пока не получается. Выкладываю текущую версию для проверки корректности работы с регулярными выражениями.
Два отличительных правила: поиск/замена построчные и поиск не жадный.
Тестовая |
|
| Back to top |
|
 |
Infocatcher
Joined: 06 Aug 2007 Posts: 1440
|
Posted: Fri May 04, 2012 5:39 am Post subject: |
|
|
| Instructor wrote: | | для проверки корректности работы с регулярными выражениями. |
Что: http
Чем: [$0]
Найти далее – Заменить – AkelPad падает
| Quote: | Описание
Неправильный путь приложения: %путь%\AkelPad.exe
Сигнатура проблемы
Имя проблемного события: APPCRASH
Имя приложения: AkelPad.exe
Версия приложения: 4.7.5.0
Отметка времени приложения: 4fa2c8e6
Имя модуля с ошибкой: AkelPad.exe
Версия модуля с ошибкой: 4.7.5.0
Отметка времени модуля с ошибкой: 4fa2c8e6
Код исключения: c0000005
Смещение исключения: 0002e4a9
Версия ОС: 6.1.7601.2.1.0.256.4
Код языка: 1049
Дополнительные сведения 1: 0a9e
Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения 3: 0a9e
Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения о проблеме
Код черпака: 2959763514
|
С «заменить все» не падает. |
|
| Back to top |
|
 |
|