Регулярные выражения
- Author
- Message
-
Offline
- Posts: 3217
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
-
Offline
- Posts: 88
- Joined: Sun Jun 03, 2012 8:15 am
Осилил. Там же просто про очередность. А по факту, [а-я]* все равно не находит слово "ёжик". А [a-zA-Z] не то же самое что \w, обе конструкции вполне современные, просто разные. А \w у меня не находит ничего кроме [0-9a-zA-Z_]. Так и не понял, FeyFre, что вы хотели сказать.VladSh wrote:В английской.
-
Offline
- Posts: 2247
- Joined: Tue Aug 07, 2007 2:03 pm
- Location: Vinnitsa, Ukraine
Visitor7
Что это такое в двух словах.
Ваш collation утверждает "После Ь идет Э, потом Ю, потом Я"
Мой collation утверждает "После Ь идет Ю, потом Я"
Мы оба правы, ибо Ваш основан на Белорусском алфавите, мой - на Украинском алфавите.
Так вот, если вы хотите чтобы "[а-я]*" нашло "ёжик" то Вы должны как-то пнуть парсер что-бы он пользовался collation "Русский алфавит", т.е. в котором "а" < "ё" < "я". А судя по вашему примеру если "[а-яё]*" находит "ёжик" то парсер пользуется collation в котором "а" < "ё" < "я" не выполняется.
Как парсеру поменять collation - дело собственно индивидуальное.
Например в СУБД MySQL collation можно задать для каждой таблицы индивидуально - это свойство таблицы. В других алгоритмах, которые зависят от collation если задается, то как-то по другому - ищите. Один из вариантов - пнуть разработчика. Другой - написать/исправить самостоятельно, третий - выкинуть и взять другое. Подход индивидуален.
Что это такое в двух словах.
Ваш collation утверждает "После Ь идет Э, потом Ю, потом Я"
Мой collation утверждает "После Ь идет Ю, потом Я"
Мы оба правы, ибо Ваш основан на Белорусском алфавите, мой - на Украинском алфавите.
Так вот, если вы хотите чтобы "[а-я]*" нашло "ёжик" то Вы должны как-то пнуть парсер что-бы он пользовался collation "Русский алфавит", т.е. в котором "а" < "ё" < "я". А судя по вашему примеру если "[а-яё]*" находит "ёжик" то парсер пользуется collation в котором "а" < "ё" < "я" не выполняется.
Как парсеру поменять collation - дело собственно индивидуальное.
Например в СУБД MySQL collation можно задать для каждой таблицы индивидуально - это свойство таблицы. В других алгоритмах, которые зависят от collation если задается, то как-то по другому - ищите. Один из вариантов - пнуть разработчика. Другой - написать/исправить самостоятельно, третий - выкинуть и взять другое. Подход индивидуален.
-
Offline
- Posts: 88
- Joined: Sun Jun 03, 2012 8:15 am
А вы уверены что мой collation вообще существует? Мне кажется мы говорим о разных уровнях. RegExp - это функция языка разработки на которую ровняется акелпад. Может быть, поиск в акелпаде даже этой функцией и реализуется(я не знаю языков, тем более функций си). У нее есть определенные возможности и определенный формат, в котором символы означают их код в "таблице символов" и, соответственно, диапазоны символов задают диапазоны кодов в "таблице символов". А формат "таблицы символов" жестко определен.FeyFre wrote:Ваш collation утверждает "После Ь идет Э, потом Ю, потом Я".
А то о чем говорите вы - это уровень функций пользовательского интерфейса(несколько уровней вверх) программы, специально разработанной в том числе для гибкой сортировки выборки. Если копнуть на несколько уровней глубже, то эта гибкая сортировка в БД посредством "таблиц очередности символов при сортировке", наверняка реализуется теми же RegExp функиями языка разработки, которые и слыхом не слыхивали ни про какой collation.
На уровне программиста скорее всего можно лишь переиначивать диапазоны подменами ввода типа "а-я" на "а-яё", но это лишь внесет путаницу. Можно сделать спец. символ для русского диапазона, например \с который будет подменяться на [А-Яа-яЁё] или сразу на [0-9_A-Za-zА-Яа-яЁё], но так ли часто это требуется, что запаривает лишний раз написать ЁА-ё или а-ё(при нечувствительности к регистру всего на символ больше, при чувствительности на два символа)? А в 99% текстов в обоих случаях Ё-ё сканает(всего на символ больше).
-
Offline
- Posts: 876
- Joined: Tue Jul 24, 2007 8:54 am
Юникодный регэксп - это жесть. Конечно удобно, но реализовать хотя бы базовый функционал - застрелиться можно.
http://www.regular-expressions.info/unicode.html
http://unicode.org/reports/tr18
http://www.regular-expressions.info/unicode.html
http://unicode.org/reports/tr18
-
Offline
- Posts: 176
- Joined: Sat Dec 24, 2011 4:05 pm
В стандартном комплекте .NET идет юникодный - можно попробовать оттуда код портировать (как вариант, из Mono), хотя может проще найти более совместимую с Акелом реализацию... А чего мне из тамошних возможностей тут главным образом не хватает, так это предпросмотра назад, хотя именованные ссылки и поддержка кириллицы в \w тоже бы не помешали.
-
Offline
- Posts: 2
- Joined: Sun Sep 16, 2012 2:32 pm
Обрезка строки
День добрый! Подскажите пожалуста!
Есть N количество строк с разным содержанием, нужно сделать обрезку всех строк на 200+- символе, чтобы в каждой строке осталисть первые 200 символов, остальное удалить.
Пробывал .{190,200}\b в Dreamweaverе отлично находит первые 190-200 символов и выделяет их, но мне нужно выделить все что после этих 190-200 символов для автозамены пустотой.
В akelpad эта конструкция работает совсем по другому, если есть знающие люди, помогите чайнику.
Есть N количество строк с разным содержанием, нужно сделать обрезку всех строк на 200+- символе, чтобы в каждой строке осталисть первые 200 символов, остальное удалить.
Пробывал .{190,200}\b в Dreamweaverе отлично находит первые 190-200 символов и выделяет их, но мне нужно выделить все что после этих 190-200 символов для автозамены пустотой.
В akelpad эта конструкция работает совсем по другому, если есть знающие люди, помогите чайнику.
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
-
Offline
- Posts: 1949
- Joined: Sat Mar 06, 2010 7:40 pm
- Location: Poland
It will work in AkelPad version 4.8.0.Что: ^([^\n\r]{200})[^\n\r]+
Чем: \1
viewtopic.php?t=1410&start=15
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
-
Offline
- Posts: 2
- Joined: Fri Oct 05, 2012 12:53 pm
Всем добрый день. Прошу помощи, и сильно не пинать вопрос по регулярны выражениям ,я уже голову поломал, не могу найти решение.
есть маасив строчек, в каждой строчке есть ссылка, начинающаяся с http:// , перед ссылкой и после неё есть текст. Собственно вопрос, каким образом можно удалить этот текст, и оставить только ссылки?
есть маасив строчек, в каждой строчке есть ссылка, начинающаяся с http:// , перед ссылкой и после неё есть текст. Собственно вопрос, каким образом можно удалить этот текст, и оставить только ссылки?