Page 4 of 13

Posted: Wed Aug 08, 2012 8:07 am
by FeyFre
ЕМНИП, \w означает "любая ЛАТИНСКАЯ буква", а чтобы и русские искались, замените на [a-zA-Zа-яА-ЯёЁ]
Шел на дворе 21 век, а Вы продолжаете пользоваться концепциями 16-го?

Posted: Wed Aug 08, 2012 8:17 am
by eil
Serge Yolkin,
извините за глупый вопрос, но и где это заменить? это каждый раз в выражение вставлять все?!. дайте пример на основе моего выражения, пожалуйста.

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

FeyFre
А как это сделать по современному?

Posted: Wed Aug 08, 2012 10:55 am
by FeyFre
Visitor7, собственно что сделать по современному?
\w итак означает символы входящие в состав слов, UniversalAlpha их иногда обзывают. Могу нарыть собственно списочек этих символов(стандарт)

Posted: Wed Aug 08, 2012 11:13 am
by Visitor7
FeyFre
А, ну это да. \w эквивалентно [\dA-Z_a-z], точнее [0-9A-Z_a-z].
С другой стороны, иногда удобней пользоваться [A-z], иногда [A-Za-z], иногда [a-z] с нечувствительностью регистра.

Posted: Wed Aug 08, 2012 11:38 am
by eil
спасибо всем за ответы, и Visitor7 за примеры.
еще несколько вопроса:
- если \w эквивалентно [\dA-Z_a-z], точнее [0-9A-Z_a-z], то почему нет чегото подобного для эквивалента русскому алфавиту?(или вернее может юникоду)
- при поиске, скажем по \b[\wа-ё]{5,6}\b, выделяет только подходящее слово = а можно ли както чтобы выделило всю строку(от enter до enter), содержащую это слово?
- мало знаю о regex, но заметил что при англ диапазон a-z, почему в русс а-ё?

Posted: Wed Aug 08, 2012 12:09 pm
by FeyFre
А, ну это да. \w эквивалентно [\dA-Z_a-z], точнее [0-9A-Z_a-z].
И ещё один пользуется логикой 16 века? В стандарте явно прописано что такое слово и из каких "букв" оно состоит. И я Вам уверяю что не состоит только из a-zA-Z диапазонов.

Posted: Wed Aug 08, 2012 12:13 pm
by FeyFre
- мало знаю о regex, но заметил что при англ диапазон a-z, почему в русс а-ё?
Долго и тяжко объяснять. Есть такое понятие COLLATION (погуглите). Так вот, в Вашем примере используется чисельный collation в то время как Вы привыкли к алфавитному.

Posted: Wed Aug 08, 2012 12:32 pm
by Serge Yolkin
FeyFre
Логика 16 века гарантированно отрабатывает везде. В том числе, в осях и программах 16 века. В этом её прелесть.

Posted: Wed Aug 08, 2012 12:46 pm
by Visitor7
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 путного по русски не выдает, а гуглить по английски мне знания языка не хватает, прочитаю только если меня в конкретную статью носом ткнуть.

Posted: Wed Aug 08, 2012 1:23 pm
by eil
Visitor7, спасибо за разбяснения с наборми символов.
а оно вам точно надо? тройной клик по слову или одинарный клик в поле перед началом строки вас не устраивает?
это нужно для того, чтобы скажем профильтровать переписку из чата и удалить все строки определенного пользователя -тоесть нужна замена всей строки с определенным словом/ником на пустую строку.

Posted: Wed Aug 08, 2012 1:51 pm
by Visitor7
eil
Заменить:
Что: (^|\n)[^\n]*слово[^\n]*(\n|$)
Чем: \n
Смотрите в Akelpad Справка\Руководство\Синтаксис регулярных выражений.

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

Posted: Wed Aug 08, 2012 2:00 pm
by Serge Yolkin
Visitor7
слэш во вторых квадратных потерялся.

Posted: Wed Aug 08, 2012 2:40 pm
by FeyFre
Поиск COLLATION путного по русски не выдает, а гуглить по английски мне знания языка не хватает, прочитаю только если меня в конкретную статью носом ткнуть.
Вас в википедию ткнуть?

Posted: Wed Aug 08, 2012 2:56 pm
by Visitor7
FeyFre
Было б неплохо, мне она на запрос отвечает - "Создать страницу «COLLATION»".