AkelPad Forum Index AkelPad
Support forum
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Регулярные выражения
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9, 10
 
Post new topic   Reply to topic    AkelPad Forum Index -> Discussion (Russian)
View previous topic :: View next topic  
Author Message
YuS



Joined: 15 Sep 2013
Posts: 422

PostPosted: Wed Mar 22, 2017 7:33 am    Post subject: Reply with quote

InFive wrote:

а как научиться составлять подобные функции?

Ну, функции, они во многих языках схожи, различия только в синтаксисе и операторах...
Скажем, в данном случае использовалась функция условного блока:
Code:
if (<здесь какое-либо условие с итоговым выводом TRUE или FALSE>) {
   Здесь набор команд, выполняемых при выводе условия в TRUE
} else {
   Здесь набор команд, выполняемых при выводе условия в FALSE
}


как-то так.
А вот, что будет использоваться в качестве условия, уже выбирается regexp-ом.

Синтаксис изучать надо JScript (не одно и то же, что javascript, хоть и похожи), ссылки на оффлайновые книжки где-то здесь на форуме публиковали, также можно на msdn [url=https://msdn.microsoft.com/ru-ru/library/72bd815a(v=vs.100).aspx]msdn[/url] почитать. В двух словах всего не рассказать...

ЗЫ Что-то с парсером на форуме, BB коды URL не работают...


Last edited by YuS on Wed Mar 22, 2017 4:11 pm; edited 2 times in total
Back to top
View user's profile Send private message
opk44



Joined: 16 Jan 2010
Posts: 545

PostPosted: Wed Mar 22, 2017 3:06 pm    Post subject: Reply with quote

YuS wrote:
ЗЫ Что-то с парсером на форуме, BB коды URL не работают...
Работают, но скобки внутри ссылок не дух не переносят.
Back to top
View user's profile Send private message
InFive



Joined: 10 Nov 2015
Posts: 77

PostPosted: Thu Jun 01, 2017 10:25 am    Post subject: Reply with quote

ребят, подскажите другой вариант написания группы для поиска неопределенного количества любых символов вместо
Code:
(.+)

если писать (.+) в скрипте TextReplace.js, то выполняется без проблем, а если писать в пакетном файле для TextReplace.js, то не выполняется...

то есть, как прописать правильно (.+) в пакетном файле для скрипта TextReplace.js?
Back to top
View user's profile Send private message
opk44



Joined: 16 Jan 2010
Posts: 545

PostPosted: Thu Jun 01, 2017 12:36 pm    Post subject: Reply with quote

InFive
Предоставленных данных для тестирования недостаточно.
Может дело просто в трактовке переводов строк?
Т.е. учитывается ли, например, флаг "n" в batch-файле?
Back to top
View user's profile Send private message
InFive



Joined: 10 Nov 2015
Posts: 77

PostPosted: Thu Jun 01, 2017 1:15 pm    Post subject: Reply with quote

opk44 wrote:
InFiveМожет дело просто в трактовке переводов строк?
Т.е. учитывается ли, например, флаг "n" в batch-файле?

да, в batch-файле флаг "n" я ставлю
Back to top
View user's profile Send private message
YuS



Joined: 15 Sep 2013
Posts: 422

PostPosted: Fri Jun 02, 2017 4:59 am    Post subject: Reply with quote

InFive wrote:
ребят, подскажите другой вариант написания группы для поиска неопределенного количества любых символов вместо
Code:
(.+)

если писать (.+) в скрипте TextReplace.js, то выполняется без проблем, а если писать в пакетном файле для TextReplace.js, то не выполняется...

то есть, как прописать правильно (.+) в пакетном файле для скрипта TextReplace.js?

Если не выполняется, то это баг и KDJ поправит его, но для этого, как сказали выше, необходимо больше информации...
Back to top
View user's profile Send private message
InFive



Joined: 10 Nov 2015
Posts: 77

PostPosted: Fri Jun 02, 2017 8:21 am    Post subject: Reply with quote

YuS wrote:

Если не выполняется, то это баг и KDJ поправит его, но для этого, как сказали выше, необходимо больше информации...


KDJ крайне редко стал бывать на форуме...

да что тут нужно еще писать, что, трудно сделать тесты? правда, вы не разрабы этого скрипта, я понимаю...

итак, пишу в пакетный файл единственную строку
Code:
(.+)   ZZZ   nr

применяю его на тексте, но выдается ошибка такого характера
Quote:
Ошибка в пакетном файле, строка: 1.
Синтаксическая ошибка в регулярном выражении!


так где же эта ошибка в этой регулярке?

если у вас есть связь с KDJ, то, пожалуйста, свяжитесь...

или может все таки есть другой вариант написать эту регулярку?
Back to top
View user's profile Send private message
opk44



Joined: 16 Jan 2010
Posts: 545

PostPosted: Fri Jun 02, 2017 9:21 am    Post subject: Reply with quote

InFive wrote:
итак, пишу в пакетный файл единственную строку
Code:
(.+)   ZZZ   nr

применяю его на тексте, но выдается ошибка такого характера
Quote:
Ошибка в пакетном файле, строка: 1.
Синтаксическая ошибка в регулярном выражении!


так где же эта ошибка в этой регулярке?
У меня ваш пример отрабатывается нормально - количество замен 117 (за образец был взят текст с этой страницы форума)

версии используемых файлов:

TextReplace.js
// http://akelpad.sourceforge.net/forum/viewtopic.php?p=30804#30804
// Version: 2016-07-26

TextReplace_function.js
http://akelpad.sourceforge.net/forum/viewtopic.php?p=30653#30653
Version: 2016-07-20
Back to top
View user's profile Send private message
YuS



Joined: 15 Sep 2013
Posts: 422

PostPosted: Fri Jun 02, 2017 9:41 am    Post subject: Reply with quote

InFive wrote:
Quote:
Ошибка в пакетном файле, строка: 1.
Синтаксическая ошибка в регулярном выражении!


так где же эта ошибка в этой регулярке?

В моем случае тоже, как и у opk44, никаких ошибок...
Видимо, у Вас где-то ошибка в кодировке или разделителях...
Выложите куда-нибудь сам batch - файл, посмотрим.
Back to top
View user's profile Send private message
yozhic



Joined: 20 Jun 2011
Posts: 212
Location: Электросталь

PostPosted: Mon Jun 26, 2017 2:09 pm    Post subject: Reply with quote

Пожалуйста, помогите разобраться. Есть текст:
Code:
a11
b22
b22
b22
c33

Выражение
Code:
(b[^\n]+\n)+
находит и выделяет все три строчки 'b22' вместе. То есть '+' работает, как и должен работать: одно или больше совпадений. А выражение
Code:
a[^\n]+\n(b[^\n]+\n)+c[^\n]+\n
не выделяет весь текст, хотя по идее должно. Весь текст можно выделить только если добавить ещё +, «ужаднить» т.е.:
Code:
a[^\n]+\n(b[^\n]+\n)++c[^\n]+\n
Почему в первом случае выделяет, а во втором нет? Баг, фича, или я чего-то недопонял?
Back to top
View user's profile Send private message
opk44



Joined: 16 Jan 2010
Posts: 545

PostPosted: Mon Jun 26, 2017 5:38 pm    Post subject: Reply with quote

yozhic wrote:
Баг, фича
1. Возможно и то и другое.
Например, при использовании SearchReplace.js (т.е. на JavaScript-овском движке), наоборот, именно второй вариант будет "рабочим", а третий (с 2-мя плюсами) нет.
2. Из любопытства. А есть ли вообще необходимость проверять "середину"? Проще же ловить только "края" (по аналогии с HTML тэгом):
Code:
a[^\n]+\n(.*\n)c[^\n]+\n
Back to top
View user's profile Send private message
yozhic



Joined: 20 Jun 2011
Posts: 212
Location: Электросталь

PostPosted: Mon Jun 26, 2017 6:11 pm    Post subject: Reply with quote

opk44 wrote:
необходимость проверять "середину"?

Есть. В реальном тексте есть строчки вида a11\nc33\nc33\n – такие тоже поймаются, если серединку обобщить, а их ловить нельзя.
Back to top
View user's profile Send private message
YuS



Joined: 15 Sep 2013
Posts: 422

PostPosted: Tue Jun 27, 2017 1:36 am    Post subject: Reply with quote

yozhic wrote:
Почему в первом случае выделяет, а во втором нет? Баг, фича, или я чего-то недопонял?

Очень похоже на ошибку в движке парсинга регэкспов. По идее, должно работать во всех случаях...
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    AkelPad Forum Index -> Discussion (Russian) All times are GMT
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Page 10 of 10

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


SourceForge.net Logo Powered by phpBB © 2001, 2005 phpBB Group