АвторСообщение



Пост N: 2
Зарегистрирован: 16.09.11
Рейтинг: 0
ссылка на сообщение  Отправлено: 24.09.11 20:19. Заголовок: Регулярные выражения


Доброе время суток!
Не могу разобраться с регулярными выражениями. Если не сложно, напишите здесь примеры каких нибудь полезных регулярных выражений... Заранее благодарю!

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 57 , стр: 1 2 3 All [только новые]





Пост N: 10
Зарегистрирован: 30.04.16
Откуда: ЛНР, краснодон
Рейтинг: 0
ссылка на сообщение  Отправлено: 03.08.16 00:53. Заголовок: Не стесняйся эксперементировать и спрашивать!


Спасибо.

Скрытый текст


добавил к этому:

#(?i)(?<=(2|блеск|бутыл[ко]|глоток|глотков|запас|кружк|литр|напи(л|ться)|пленк|стакан)[^\.,!?-]{0,30})\bводы\b=воды<

получилось:

#(?i)(?<=(2|блеск|бутыл[ко]|глот(кам|ками|ков|ок)|запас|капельками|капл(ей|ю|я|ями)|кран|круж(ек|ка|ке|ку)|литр|напи(лись|лся|ться)|насчет|отсутстви(ем|и|ю|я)|немало|пены|пленк|полумра(ке|ку)|полусфера|попросил|пригоршнями|продовольствия|продовольствия\,|просто|след|стакан|травы|требова(л|ла|ли|ло|лось)|чашк(а|е|и|ой|у)|челове(ка|ком|ку))[^\.,!?-]{0,30})\bводы\b=водЫ
к
Возможно ли прикрутить запятую , чтоб не дублировать слово.
И тире заодно?

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 76
Зарегистрирован: 29.03.13
Откуда: Санкт-Петербург
Рейтинг: 0
ссылка на сообщение  Отправлено: 03.08.16 09:55. Заголовок: Речь идёт о Николае?..


Речь идёт о Николае?
|продовольствия\,| - запятую экранировать не надо - это не оператор типа точки, а просто один из символов.

Прикрутить запятую можно, как напишете так и будет искать

2| - по моему бессмысленный оператор. "2 капли воды" что-ли? может всё-таки так "две капли воды"

(ек|ка|ке|ку) - оператор скобки выделяет память для обработки, чтобы к этому фрагменту можно было обратиться позднее ($1 - после знака равно стоит обращение к скобкам 1 и т.п.) оператор перечня памяти не выделяет. я бы написал лучше так - [каеу]{2} и добавил бы еще окончаний: кой ками ках. В итоге получилось бы [каеойумих]{2,4}

wasyaka пишет:

 цитата:
Возможно ли прикрутить запятую , чтоб не дублировать слово.
И тире заодно?


не понял вопроса.
Кажется догадался. Это |продовольствия\,| можно так написать |продовольствия[,]?|
[,]? - ноль или один раз из перечня

В поисках рая.. Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 77
Зарегистрирован: 29.03.13
Откуда: Санкт-Петербург
Рейтинг: 0
ссылка на сообщение  Отправлено: 03.08.16 12:12. Заголовок: wasyaka пишет: И вн..


wasyaka пишет:

 цитата:
И внекоторых рег. выражениях добавлен Ъ:


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

Тут требуется пояснение. В KoobAudio реализованая великолепная задумка (подробнее смотри справку) - любые выражения, расположенные в словарях в основной папке (то есть не в папках 1 и 2), слово которое уже было обработано проигнорируют. Однако, обработка уже обработанного слова сможет и будет сделана в папке постобработки (папке 2). Чтобы этого не было сделано лично я вставляю перед знаком ударения Ъ знак.

То есть делаю выражения такого типа

#(?i)(?<=\b((без|возле|мимо|выше|ниже|дальше|ближе|для|до|из|оба|от|с|у|вместо|вдоль|вглубь|внутр[ьи]|снаружи|вне|вокруг|около|кроме|глубине|посреди|напротив|против|всего|из([ -]за|[ -]под)?|нет|ни|об[ае]|дв[ае]|три|четыре|одной|другой|первой|второй|следующей)\s(его|е[её]|их|моей|твоей|своей|нашей|моего|твоего|своего|нашего|того|этого|сего|той)?)\b[^\.,!?-]{0,1})\bадреса\b=аъ<дреса

В поисках рая.. Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 11
Зарегистрирован: 30.04.16
Откуда: ЛНР, краснодон
Рейтинг: 0
ссылка на сообщение  Отправлено: 06.08.16 15:12. Заголовок: odinokiyklaus Большо..


odinokiyklaus
Большое спасибо.
Вопрос:

...|год|давлени[емюя]{1,2}....{0,30})\bвойны\b=войнЫ
сработало:
давлением войнЫ, -- годы войнЫ; годом войнЫ
удалил квадратно-фигурные скобки, оставил:
|давлени| -- результат тотже.
т.е в скобках только заданные окончания, а если без них, то слово получается"безконечным"?
В смысле сработает на непонятно что(годные и т.д.?


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 78
Зарегистрирован: 29.03.13
Откуда: Санкт-Петербург
Рейтинг: 0
ссылка на сообщение  Отправлено: 06.08.16 15:26. Заголовок: Можно всё увидеть вы..


Можно всё увидеть выражение?

В поисках рая.. Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 12
Зарегистрирован: 30.04.16
Откуда: ЛНР, краснодон
Рейтинг: 0
ссылка на сообщение  Отправлено: 06.08.16 16:16. Заголовок: #(?i)(?<=\..




#(?i)(?<=\b(алтар|\bдве\b|близос[итью]{2,3}|будто|вопрос|год|давлени|дат[аеуой]{1,2}|демон|день|дн|задач|зако[ануыомих]{1,}|истори[ийюя]|командор|круговорот|мастер|машин|месяц|навык|начал|недел|окончани|отголоск[иахом]{1,2}|перво[гйо]{2}|пепл|период|планетарий|после|правд|реали[ий]|середин|сердц|судьб[аыойюе]{1,2}|\bтри\b|тягот|тяжест|хо[дуеы]{1,2}|утечк|ча[сыамов]{1,2,3|}хотел|)[^\.,!?-]{0,30})\bвойны\b=войнЫ

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 79
Зарегистрирован: 29.03.13
Откуда: Санкт-Петербург
Рейтинг: 0
ссылка на сообщение  Отправлено: 06.08.16 20:40. Заголовок: Понятно. Искомое выр..


Понятно. Искомое выражение у вас такое
wasyaka пишет:

 цитата:
#(?i)(?<=\b(алтар|\bдве\b|близос[итью]{2,3}|будто|вопрос|год|давлени|дат[аеуой]{1,2}|демон|день|дн|задач|зако[ануыомих]{1,}|истори[ийюя]|командор|круговорот|мастер|машин|месяц|навык|начал|недел|окончани|отголоск[иахом]{1,2}|перво[гйо]{2}|пепл|период|планетарий|после|правд|реали[ий]|середин|сердц|судьб[аыойюе]{1,2}|\bтри\b|тягот|тяжест|хо[дуеы]{1,2}|утечк|ча[сыамов]{1,2,3|}хотел|)[^\.,!?-]{0,30})\bвойны\b=войнЫ



#(?i)(?<=\b(искомое выражение)[любые символы кроме . , ! ? -]{0,30})\bвойны\b=войнЫ
\b(искомое выражение) - искомое выражение начинается с того что перечислено в скобках и далее следом за искомым выражением идут любые символы, кроме . , ! ? - (то есть буквы, цифры, пробелы, и т.д) в количестве от нуля до 30 штук.

В этот промежуток [^\.,!?-]{0,30} и укладываются все ваши окончания которые могут встречаться.
Таким образом может быть обработано не только выражение близос[итью]{2,3} - близости близостью, но и "близос"[тя] + "ми" или "близос"[тя] +"тратататата" и т.д, потому что "ми" и "тратататата" полностью укладываются в диапазон идущий следом - [^\.,!?-]{0,30}
Скрытый текст


Чтобы ограничить искомое выражение с двух сторон следует использовать \b(искомое выражение)\b

\bвсе - найдет слово всех, всеми всеобщий и т.д
\bвсе\b - найдет толюко слово все

То есть если вы напишите вот такое выражение #(?i)(?<=\b(искомое выражение)\b[любые символы кроме . , ! ? -]{0,30})\bвойны\b=войнЫ
то у вас будет находить только выражения "близости войны" "близостью тратата войны" и т.д.


В поисках рая.. Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 80
Зарегистрирован: 29.03.13
Откуда: Санкт-Петербург
Рейтинг: 0
ссылка на сообщение  Отправлено: 06.08.16 21:49. Заголовок: Заметил ошибки ..


Заметил ошибки
|утечк|ча[сыамов]{1,2,3|}хотел|)

|утечк|ча[сыамов]{1,2,3|}хотел|)

Так писать нельзя. Можно так {1,2} -"от одного до двух", {1,3} "от одного до трёх". Но не так - {1,2,3}
Внутри квантификатора {} симол | не допускается. Можно только одну или дву цифры и запятую - {2} {,6} {5,} {5,10}.
хотел|) посли хотел идет | и правая скобка. Раз между ними нет символа - то значит будет обрабатываться "пустой" - читай любой симсол.

Такие выраджения типа этого (хотел|) вообще недопустимы
То есть пример
выражение #(?i)(?<=\b(хотел|)\b[^\.,!?-]{0,30})\bвойны\b=войны
найдет
не только хотел войны но и хотелтратата войны
так как обработает пустой симовол |) в количестве от нуля до 30-ти раз.
Скрытый текст


Вот как правильно отработает
Скрытый текст



В поисках рая.. Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 13
Зарегистрирован: 30.04.16
Откуда: ЛНР, краснодон
Рейтинг: 0
ссылка на сообщение  Отправлено: 22.08.16 22:32. Заголовок: odinokiyklaus Спасиб..


odinokiyklaus
Спасибо за ученье.


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 14
Зарегистрирован: 30.04.16
Откуда: ЛНР, краснодон
Рейтинг: 0
ссылка на сообщение  Отправлено: 22.08.16 23:04. Заголовок: odinokiyklaus Спасиб..


odinokiyklaus
Спасибо за ученье.

Если интересно:
Это .chisla.rex из балаболки Скрытый текст

Работает эффективней чем "числительные".
если сможете и интересно - алгоритм замен .рекс в дик.



Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 85
Зарегистрирован: 29.03.13
Откуда: Санкт-Петербург
Рейтинг: 0
ссылка на сообщение  Отправлено: 25.08.16 11:12. Заголовок: Перевел ваш словарь ..


Перевел ваш словарь из rex в dic

Алгоритм
1. Замена @ (в Балаболке это символ НЕ игнорировать регистр) на выражение (?-i) (В рег. выр. НЕ игнорировать регистр так описывается)

2. Замена # (в Балаболке это комментарии) на // - (в KoobAudio это комментарии)

3. Замена \r\n на выражение \r\n# - все рег. выражения в KoobAudio должны начинаться с символа #

4. Поскольку в оригинальном словаре (строки 521-525, 578) в рег. выражениях встречается выражение :$21: и тому подобное, то возникает ошибка, и такие правила не обрабатываются. Поясню, в рег. выражении после знака равно "=" стоит выражение на которое меняется искомое выражение. После символа $ должна стоять цифра от 1 до 9 (это ссылка на скобку (группу) в искомом выражении. (Пример #(\d)(\d)=$1 - здесь будет напечатано только первая цифра, обрамлённая первой группой скобок) . Если после символа $ встретится две подряд идущие цифры, то такое выражение будет проигнорировано и не обработано (#\b([0]?1)<t([a-z])(\d)>=<$1:$21:t$3> - в выражении перед = нет 21 группы). Чтобы правила в строках 521-525, 578 были обработаны правильно я разделил в выражении :$21: символы $2 и 1 знаком @. После корректной отработки этих выражений символ @ удаляется. Поэтому в исправленном словаре, добавлены два дополнительных правила #:([a-z])@(\d):=:$1$2: (строки 531 и 580).

Ссылки на словари (там же сравнение результатов обработки старого и нового словаря) - https://yadi.sk/d/EjYyUpK4uUPDo
Пользуйтесь на здоровье!

В поисках рая.. Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 86
Зарегистрирован: 29.03.13
Откуда: Санкт-Петербург
Рейтинг: 0
ссылка на сообщение  Отправлено: 25.08.16 11:17. Заголовок: Забыл добавить. Чтоб..


Забыл добавить. Чтобы числительные работали корректно, этот словарь должен быть помещён только в паку 1 (папка предварительной обработки). В общей папке (где по умолчанию лежит словарь Числительные.dic) новый словарь не будет правильно работать.
Словарь Числительные_KoobAudio можно отключить, а можно и оставить.

P.S. Чтение чисел стало значительно лучше (использую оба словаря), но время обработки заметно увеличилось. Но пока это не критично.

В поисках рая.. Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 15
Зарегистрирован: 30.04.16
Откуда: ЛНР, краснодон
Рейтинг: 0
ссылка на сообщение  Отправлено: 30.08.16 12:03. Заголовок: odinokiyklaus Ещё р..



odinokiyklaus
Ещё раз(неоднократно) спасибо.
Вопросы:(ко всем пользователям)
1.Возможно ли прописать(рег), чтобы после названия книги, главы и т.д. ставилась точка? Чтоб читалось раздельно?

 цитата:
Владимир Стрельников

Ссыльнопоселенец



2.Возможно ли в KooBAudio применить теги для смены голоса(прочтение сносок, антоннация ит.д.)

 цитата:
<VOICE REQUIRED="NAME=IVONA 2 Tatyana OEM"> (текст) </VOICE> (это Балаболка и MP3book2005)





Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 8
Зарегистрирован: 24.07.16
Рейтинг: 0
ссылка на сообщение  Отправлено: 30.08.16 23:09. Заголовок: wasyaka пишет: 1.Во..


wasyaka пишет:

 цитата:
1.Возможно ли прописать(рег), чтобы после названия книги, главы и т.д. ставилась точка? Чтоб читалось раздельно?


(?m)([А-я])$=$1.


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 17
Зарегистрирован: 30.04.16
Откуда: ЛНР, краснодон
Рейтинг: 0
ссылка на сообщение  Отправлено: 02.09.16 21:52. Заголовок: MoppoH2 пишет: wasy..


MoppoH2 пишет:

 цитата:
wasyaka пишет:

 цитата:
1.Возможно ли прописать(рег), чтобы после названия книги, главы и т.д. ставилась точка? Чтоб читалось раздельно?


(?m)([А-я])$=$1.



Не работает.

Для балаболки в rex методом тыка подобрал ([A-Za-zА-яЁё])(\r)=$1.


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 88
Зарегистрирован: 29.03.13
Откуда: Санкт-Петербург
Рейтинг: 0
ссылка на сообщение  Отправлено: 06.09.16 13:51. Заголовок: wasyaka пишет: 2.Во..


wasyaka пишет:

 цитата:
2.Возможно ли в KooBAudio применить теги для смены голоса(прочтение сносок, антоннация ит.д.)

 цитата:
<VOICE REQUIRED="NAME=IVONA 2 Tatyana OEM"> (текст) </VOICE> (это Балаболка и MP3book2005)



Режим Билингво пробовали? Может там это уже реализовано? (сразу скажу, я не пробовал).

Скрытый текст



В поисках рая.. Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 18
Зарегистрирован: 30.04.16
Откуда: ЛНР, краснодон
Рейтинг: 0
ссылка на сообщение  Отправлено: 16.09.16 00:43. Заголовок: odinokiyklaus пишет:..


odinokiyklaus пишет:

 цитата:
ежим Билингво пробовали? Может там это уже реализовано? (сразу скажу, я не пробовал).


Билингво - это чтение латиницы.
в словаре chisla нашел ошибку:(в оригинале 167)
(\bв\b)\s((\bначале\b|\bконце\b|\bсередине\b|(\bпервой\b|\bвторой\b)\s\bполовине\b)\s)(\d+)<рим\.ч\.>\s(\bв\.|\bвека\b)=$1 $2$5<td6> века(<td6>заменить на <td2>)(ом на ого)
Попытался улучшить навроде 40-41х и 40-41-х (Игнор первой цифры)

#(\d+)(\-)(\d+)([A-Za-zА-яЁё]+)=$1$4 $3$4
#(\d+)(\-)(\d+)(\-)([A-Za-zА-яЁё]+)=$1$4$5 $3$4$5

Срабатывает, но длинный пробел(2или3) и ]+) - его роль?
иСкрытый текст

Навроде контрольной в школе...


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 89
Зарегистрирован: 29.03.13
Откуда: Санкт-Петербург
Рейтинг: 0
ссылка на сообщение  Отправлено: 20.09.16 12:06. Заголовок: wasyaka пишет: в сл..


wasyaka пишет:

 цитата:
в словаре chisla нашел ошибку:(в оригинале 167)
(\bв\b)\s((\bначале\b|\bконце\b|\bсередине\b|(\bпервой\b|\bвторой\b)\s\bполовине\b)\s)(\d+)<рим\.ч\.>\s(\bв\.|\bвека\b)=$1 $2$5<td6> века(<td6>заменить на <td2>)(ом на ого)


Я римскими числами из этого словаря вообще не пользуюсь. Меня напрягает, что из-за этих правил обработки римских чисел каждый введёный символ обрабатывается. Для себя я сделал по другому - перед словарем обработки чисел задал свои правила перевода римских чисел в арабские. И стало всё гораздо лучше.

Скрытый текст


Кроме того, из-за этих "римских правил" обработка выражений типа при И. Ю. Петре VIII I.B.M. Company становится совсем безобразным. Я для себя решил эту проблему и теперь это тестовое выражение обрабатывается корректно.
Скрытый текст



В поисках рая.. Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 90
Зарегистрирован: 29.03.13
Откуда: Санкт-Петербург
Рейтинг: 0
ссылка на сообщение  Отправлено: 20.09.16 12:31. Заголовок: wasyaka пишет: Попы..


wasyaka пишет:

 цитата:
Попытался улучшить навроде 40-41х и 40-41-х (Игнор первой цифры)

#(\d+)(\-)(\d+)([A-Za-zА-яЁё]+)=$1$4 $3$4
#(\d+)(\-)(\d+)(\-)([A-Za-zА-яЁё]+)=$1$4$5 $3$4$5



В этом словаре это реализуется по-другому
Нужно в словаре найти этот блок правил

Скрытый текст


и вставить перед ним дополнительный блок правил

Скрытый текст


wasyaka пишет:

 цитата:
Срабатывает, но длинный пробел(2или3) и ]+) - его роль?



Длины пробел должен быть еще в самом начале обработки любых правил заменён коротким. Проверьте наличие правила в словаре чисел. Если его нет, то добавьте в самое его начало.

#\—|\–=-

Кстати эти тире — или – или - вовсе не обязательно экранировать (т.е. писать так \-). Эти знаки не являются спецсимволами. Так что если напишите просто правило

#—|–=-

то оно тоже сработает

wasyaka пишет:

 цитата:
[A-Za-zА-яЁё]+



Символы в квадратных скобках без знака (квантификатора) "+" или "*" - означает любой один! из перечисленных символов.
Знак "+" после [] т.е. []+ - тоже самое что и []{1,} - то есть любой из символов в количестве больше одного (один или более символов).
"*" - то же только "ноль или более символов"
Таким образом выражение "[A-Za-zА-яЁё]+" это любые символы из перечня, с учётом регистра букв, в количестве более одного.




В поисках рая.. Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 91
Зарегистрирован: 29.03.13
Откуда: Санкт-Петербург
Рейтинг: 0
ссылка на сообщение  Отправлено: 20.09.16 12:37. Заголовок: wasyaka пишет: Били..


wasyaka пишет:

 цитата:
Билингво - это чтение латиницы.


Как я понял это чтение диалогов двумя голосами. Отличный режим для оживления Николая. Можно настроить тембр, скорость чтения в диалогах.
ТО есть, к примеру, первый голос читает выше и быстрее (вопрошает), а второй басовитее и медленнее (отвечает раздумывая не поставленный вопрос).

В поисках рая.. Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 57 , стр: 1 2 3 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 1
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет