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  Next
 
Post new topic   Reply to topic    AkelPad Forum Index -> Discussion (Russian)
View previous topic :: View next topic  
Author Message
FeyFre



Joined: 07 Aug 2007
Posts: 2000
Location: Vinnitsa, Ukraine

PostPosted: Wed Aug 08, 2012 8:07 am    Post subject: Reply with quote

Quote:
ЕМНИП, \w означает "любая ЛАТИНСКАЯ буква", а чтобы и русские искались, замените на [a-zA-Zа-яА-ЯёЁ]
Шел на дворе 21 век, а Вы продолжаете пользоваться концепциями 16-го?
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
eil



Joined: 15 Nov 2009
Posts: 30
Location: Alex

PostPosted: Wed Aug 08, 2012 8:17 am    Post subject: Reply with quote

Serge Yolkin,
извините за глупый вопрос, но и где это заменить? это каждый раз в выражение вставлять все?!. дайте пример на основе моего выражения, пожалуйста.
Back to top
View user's profile Send private message
Visitor7



Joined: 03 Jun 2012
Posts: 88

PostPosted: Wed Aug 08, 2012 9:30 am    Post subject: Reply with quote

eil
Если вам нужны слова с цифрами и подчеркиванием, то можно так
\b[\wЁА-ё]{5,6}\b
можно без \b, тогда лишь первый результат может быть неправильным если курсор поначалу стоит на середине слова.
Если проследите за галками("слово целиком" включено и "учитывать регистр" выключено), можно так:
[\wа-ё]{5,6}
Если не нужны цифры и подчеркивание и галки как надо:
[a-zа-ё]{5,6}

FeyFre
А как это сделать по современному?
Back to top
View user's profile Send private message
FeyFre



Joined: 07 Aug 2007
Posts: 2000
Location: Vinnitsa, Ukraine

PostPosted: Wed Aug 08, 2012 10:55 am    Post subject: Reply with quote

Visitor7, собственно что сделать по современному?
\w итак означает символы входящие в состав слов, UniversalAlpha их иногда обзывают. Могу нарыть собственно списочек этих символов(стандарт)
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
Visitor7



Joined: 03 Jun 2012
Posts: 88

PostPosted: Wed Aug 08, 2012 11:13 am    Post subject: Reply with quote

FeyFre
А, ну это да. \w эквивалентно [\dA-Z_a-z], точнее [0-9A-Z_a-z].
С другой стороны, иногда удобней пользоваться [A-z], иногда [A-Za-z], иногда [a-z] с нечувствительностью регистра.
Back to top
View user's profile Send private message
eil



Joined: 15 Nov 2009
Posts: 30
Location: Alex

PostPosted: Wed Aug 08, 2012 11:38 am    Post subject: Reply with quote

спасибо всем за ответы, и Visitor7 за примеры.
еще несколько вопроса:
- если \w эквивалентно [\dA-Z_a-z], точнее [0-9A-Z_a-z], то почему нет чегото подобного для эквивалента русскому алфавиту?(или вернее может юникоду)
- при поиске, скажем по \b[\wа-ё]{5,6}\b, выделяет только подходящее слово = а можно ли както чтобы выделило всю строку(от enter до enter), содержащую это слово?
- мало знаю о regex, но заметил что при англ диапазон a-z, почему в русс а-ё?
Back to top
View user's profile Send private message
FeyFre



Joined: 07 Aug 2007
Posts: 2000
Location: Vinnitsa, Ukraine

PostPosted: Wed Aug 08, 2012 12:09 pm    Post subject: Reply with quote

Quote:
А, ну это да. \w эквивалентно [\dA-Z_a-z], точнее [0-9A-Z_a-z].
И ещё один пользуется логикой 16 века? В стандарте явно прописано что такое слово и из каких "букв" оно состоит. И я Вам уверяю что не состоит только из a-zA-Z диапазонов.
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
FeyFre



Joined: 07 Aug 2007
Posts: 2000
Location: Vinnitsa, Ukraine

PostPosted: Wed Aug 08, 2012 12:13 pm    Post subject: Reply with quote

Quote:
- мало знаю о regex, но заметил что при англ диапазон a-z, почему в русс а-ё?
Долго и тяжко объяснять. Есть такое понятие COLLATION (погуглите). Так вот, в Вашем примере используется чисельный collation в то время как Вы привыкли к алфавитному.
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
Serge Yolkin



Joined: 27 Jul 2010
Posts: 218

PostPosted: Wed Aug 08, 2012 12:32 pm    Post subject: Reply with quote

FeyFre
Логика 16 века гарантированно отрабатывает везде. В том числе, в осях и программах 16 века. В этом её прелесть.
Back to top
View user's profile Send private message
Visitor7



Joined: 03 Jun 2012
Posts: 88

PostPosted: Wed Aug 08, 2012 12:46 pm    Post subject: Reply with quote

eil wrote:
Почему нет чегото подобного для эквивалента русскому алфавиту?
Потому что английский распиарен до статуса международного, а о других никто не заботится. И потому что в каждом языке свои наборы символов на своих местах и пришлось бы для каждого языка делать свой аналог \w.
eil wrote:
а можно ли как-то чтобы выделило всю строку(от enter до enter)
а оно вам точно надо? тройной клик по слову или одинарный клик в поле перед началом строки вас не устраивает?
eil wrote:
мало знаю о regex, но заметил что при англ диапазон a-z, почему в русс а-ё?
Тоже о regular expressions только недавно узнал на этом форуме)) Я просто открыл таблицу символов в акелпаде, Правка\Вставить символ, и посмотрел последовательности в разных шрифтах, попробовал на разных кодировках - одно и то же.
Латинские символы расположены в такой последовательности: что-то, A-Z, [\]^_`, a-z, что-то. Соответственно, [A-z] захватит латинский алфавит с символами [\]^_`. А [A-Za-z] - только латинские символы.
Русские символы расположены в такой последовательности: что-то, Ё, старорусские большие, А-Я, а-я, ё, старорусские маленькие, что-то.
Соответственно, [А-я] захватит весь новый алфавит кроме ёЁ (то же что [А-Яа-я]). [а-ё] захватит все маленькие буквы(а-я и ё). Чтобы захватить весь новорусский алфавит - [ЁА-Яа-яё] ровно [А-ёЁ] ровно [А-яёЁ] и т.п.
Так что, в принципе, для поиска можно пользоваться захватом всего русского алфавита [Ё-ө] или схалтурить для простоты [Ё-ё].

FeyFre
Не знаю, отсюда поподробней. Я лишь вот это видел:
Справочник JavaScript: \w эквивалентно [A-Za-z0-9_].
Справка Akelpad: \w эквивалентно '[A-Za-z0-9_]'.
Только латиница, цифры и подчеркивание.
Поиск COLLATION путного по русски не выдает, а гуглить по английски мне знания языка не хватает, прочитаю только если меня в конкретную статью носом ткнуть.
Back to top
View user's profile Send private message
eil



Joined: 15 Nov 2009
Posts: 30
Location: Alex

PostPosted: Wed Aug 08, 2012 1:23 pm    Post subject: Reply with quote

Visitor7, спасибо за разбяснения с наборми символов.
Quote:
а оно вам точно надо? тройной клик по слову или одинарный клик в поле перед началом строки вас не устраивает?
это нужно для того, чтобы скажем профильтровать переписку из чата и удалить все строки определенного пользователя -тоесть нужна замена всей строки с определенным словом/ником на пустую строку.
Back to top
View user's profile Send private message
Visitor7



Joined: 03 Jun 2012
Posts: 88

PostPosted: Wed Aug 08, 2012 1:51 pm    Post subject: Reply with quote

eil
Заменить:
Что: (^|\n)[^\n]*слово[^\n]*(\n|$)
Чем: \n
Смотрите в Akelpad Справка\Руководство\Синтаксис регулярных выражений.

Serge Yolkin
Точно, потерялся, спасибо.


Last edited by Visitor7 on Wed Aug 08, 2012 2:06 pm; edited 1 time in total
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 27 Jul 2010
Posts: 218

PostPosted: Wed Aug 08, 2012 2:00 pm    Post subject: Reply with quote

Visitor7
слэш во вторых квадратных потерялся.
Back to top
View user's profile Send private message
FeyFre



Joined: 07 Aug 2007
Posts: 2000
Location: Vinnitsa, Ukraine

PostPosted: Wed Aug 08, 2012 2:40 pm    Post subject: Reply with quote

Quote:
Поиск COLLATION путного по русски не выдает, а гуглить по английски мне знания языка не хватает, прочитаю только если меня в конкретную статью носом ткнуть.
Вас в википедию ткнуть?
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
Visitor7



Joined: 03 Jun 2012
Posts: 88

PostPosted: Wed Aug 08, 2012 2:56 pm    Post subject: Reply with quote

FeyFre
Было б неплохо, мне она на запрос отвечает - "Создать страницу «COLLATION»".


Last edited by Visitor7 on Wed Aug 08, 2012 8:35 pm; edited 3 times in total
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  Next
Page 4 of 7

 
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