Page 7 of 29
Posted: Fri Jun 15, 2012 1:12 pm
by VladSh
FeyFre
Для обычного пользователя эта логика непонятна, понятно только, что так сделано чтобы что-то где-то внутри было легче.
Но можно сделать как в Eclipse (у меня редактор на его основе):
- при наборе разделителей слева или справа в поле галка дизаблится;
- при вставке из него из буфера обмена галка автоматом снимается.
В обоих случаях текст ищется как бы без неё.
Posted: Fri Jun 15, 2012 7:13 pm
by Instructor
VladSh
Словом поиск считает все, что имеет слева и справа: разделитель или начало строки или конец строки. Т.е. в вашем случае, чтобы найти ', слева и справа от символа должны находится разделители или начало строки или конец строки
Posted: Sat Jun 16, 2012 9:57 pm
by VladSh
Циклический поиск - хорошая штука, но когда и замена начинается циклически, то это плохо, - опять приходится проверять, т.к. оно уже проверенные находит и пытается заменить (поймал себя на том, что несколько раз по ошибке делал замену, не сообразив, что оно по кругу началось).
Posted: Wed Jun 27, 2012 7:44 am
by schumakow
Помогите.
Можно ли сделать в программе чтобы удалять участки текста находящиеся между тегами
вместе с тегами td.
Как это реализовать за ранее спасибо.
Posted: Wed Jun 27, 2012 9:21 am
by KDJ
schumakow
Replace (Ctrl+R) with Regular expressions:
What: <td>[\s\S]*</td>
With:
Posted: Wed Jun 27, 2012 9:45 am
by opk44
schumakow
1. Ответ на Ваш вопрос уже есть в этой ветке всего одной страницей ранее (там даже более сложная ситуация рассмотрена).
Нужно только взять и применить к своему случаю.
Use script: SearchReplace.js.
What: (<td>)[\s\S]*?(</td>)
With:
Select: Regular expressions
2. Возможно имеет смысл в шаблоне поиска убрать закрывающую угловую скобку у тега <td>
Use script: SearchReplace.js.
What: (<td)[\s\S]*?(</td>)
With:
Select: Regular expressions
тогда будут определяться, например, и такие случаи тоже:
Code: Select all
<td style="text-align: right"> Какой-то текст </td>
3. Если замены единичны, редки, и очень не хочется связываться с Регулярными выражениями, то можно воспользоваться выделением на панели CodeFold (фолдинговая панель Coder-плагина), а затем удалять выделенное. Но это очень непроизводительно.
Posted: Wed Jun 27, 2012 9:54 am
by Visitor7
What: <td>[\s\S]*</td>
Что: (<td>)[\s\S]*?(</td>)
Данные выражения целиком выделяют следующий текст:
Code: Select all
<td></td></tr>
<tr>
<td width="210"> <img src="pic2.jpg" alt="" width="195" height="114" /></td>
Posted: Wed Jun 27, 2012 10:19 am
by KDJ
Visitor7
Looks like a bug in AkelPad.
AkelHelp-Eng.htm (4.7.7) wrote:Regular expression quantifiers (*, +, {n,}) are always non-greedy.
Posted: Wed Jun 27, 2012 11:17 am
by Visitor7
Regular expression quantifiers (*, +, {n,}) are always non-greedy.
Я понял, а как написать:
<td(.* но без ">")>(.* но без "<td" и "</td")</td>
Posted: Wed Jun 27, 2012 12:26 pm
by Infocatcher
но без "<td"
Вроде как, полноценный парсер XML/HTML на регулярных выражениях принципиально невозможен. Если только с рекурсией типа как в Perl.
Во всяком случае, вряд ли получится в общем случае обойтись только одной заменой.
В простом вариант можно только исключить один уровень вложенности вида
Если без учета вложенности, то в SearchReplace.js должна сработать такая замена:
<td[^>]*>[\s\S]*?</td>
=> (пустая строка)
Posted: Wed Jun 27, 2012 2:27 pm
by Visitor7
Значит в SearchReplace.js не хватает строки "исключить"))) Можно было б орудовать.
Что искать: <td[^>]*>[\s\S]*?</td>
Исключить если в найденном есть: <tr
Заменить на: пусто
Несколько проходов, в зависимости от степени вложенности, дали бы качественное удаление.
Posted: Thu Jul 12, 2012 8:33 am
by FiLinX
вот тут ещё вопросец есть, насчёт дубликатов удаления.. подскажите, а возможно ли чтобы удалялись не только строки дублей, но вместе с ними и по одной строке над ними находящиеся? и лучше б конечно чтоб и сами пустые строки от них, тоже удалялись бы.. например:
Code: Select all
#EXTM3U
#EXTINF:-1,AutoMoto:первый автомобильный
rtmp://ms1.autoru.tv/live/360p
#EXTINF:-1,AutoMoto:1autotv.ru
rtmp://95.215.2.55/live/1autotv3
#EXTINF:-1,AutoMoto:OFFroadTV
rtmp://grey.ether.tv/live/fulltime/broadcast4
#EXTINF:-1,AutoMoto:retro
rtmp://live214.la3.origin.filmon.com:1935/live/784.high.stream
#EXTINF:-1,AutoMoto:Miami TV AutoShow
mmsh://74.208.43.204:90/autoshow
#EXTINF:-1,AutoMoto:AutoSport
mms://100automoto.tv/100livesport
#EXTINF:-1,AutoMoto:Porsche Channel
mms://100automoto.tv/channel_porsche
#EXTINF:-1,AutoMoto:Auto Italia Channel
mms://100automoto.tv/channel_italy
#EXTINF:-1,AutoMoto:Mercedes-Benz Channel
mms://100automoto.tv/channel_mercedes
#EXTINF:-1,AutoMoto:BMW Channel
mms://100automoto.tv/bmw
#EXTINF:-1,AutoMoto:utomoto
mms://www.100automoto.tv/bgtv1
#EXTINF:-1,AutoMoto:100gaz
mms://100automoto.tv/100gaz
#EXTINF:-1,AutoMoto:майами шоу
mmsh://74.208.43.204:90/autoshow
#EXTINF:-1,AutoMoto:4х4
rtmp://grey.ether.tv/live/fulltime/broadcast4
#EXTINF:-1,AutoMoto:порш
mms://100automoto.tv/channel_porsche
#EXTINF:-1,AutoMoto:мерс
mms://100automoto.tv/channel_mercedes
#EXTINF:-1,AutoMoto:ретро
rtmp://live214.la3.origin.filmon.com:1935/live/784.high.stream
имеется даже вебсервис, где подобное реализуется, но у меня часто инет отсутсвует, а править то самому и ловчее думаю)
PS: имеется ввиду, чтоб удалялись повторы, а первые оставались
PS:2 что то я снова недодумав сразу) а надо всё ещё сложнее - ведь сравнивать надо, только строки не содержащие в себе "#EXTINF:*"
Posted: Thu Jul 12, 2012 11:20 am
by TNX
FiLinX wrote:вот тут ещё вопросец есть, насчёт дубликатов удаления..
Так?
(#EXTINF:[^\n]*\n)([^\n]*\n)(.*)#EXTINF:[^\n]*\n\2
\1\2\3
Для SearchReplace.js:
(#EXTINF:.*\n)(.*\n)([\s\S]*)#EXTINF:.*\n\2
$1$2$3
PS. В обоих случаях требуется несколько проходов.
Posted: Thu Jul 12, 2012 4:24 pm
by Visitor7
Здорво работает, всетаки для многого не хватает режима "по кругу". А SearchReplace скушал $1$2$3 только в таких видах:
$1 + $2 + $3
$1 + $2 + $3;
$1, $2, $3
$1, $2, $3;
Posted: Thu Jul 12, 2012 5:57 pm
by FeyFre
А SearchReplace скушал $1$2$3 только в таких видах:
Если стоит Replace with function, то единственный правильный вид конкатенации захватов - $1 + $2 + $3