Регулярные выражения

Все, что вы хотели знать о программизме, но боялись спросить.
Ответить
Zy
Маньяк
Сообщения: 4706
Зарегистрирован: 20 янв 2005, 19:11

Регулярные выражения

Сообщение Zy »

Возник такой вот вопрос, не могу ничего придумать.

Например, дана строка вида - "xyz", нужен шаблон для определения ситуации, когда x, y и z на самом деле одно и то же число. Ну или буква.

В первые пять секунд кажется, что ничего умного, а в последующие два часа ничего в голову не приходит. Я вообще-то в regex не большой специалист, но все же.
spavel
Житель
Сообщения: 662
Зарегистрирован: 10 апр 2006, 13:16
Откуда: Coquitlam

Re: Регулярные выражения

Сообщение spavel »

202020 например удовлетворяет условиям или толъко один 'знак' используется ?
badger

Re: Регулярные выражения

Сообщение badger »

Один знак -- это цифра, а речь вроде бы о числе. Хотя может быть Zy именно цифры имел в виду? Иначе, действительно, 202020 один из вариантов.
Zy
Маньяк
Сообщения: 4706
Зарегистрирован: 20 янв 2005, 19:11

Re: Регулярные выражения

Сообщение Zy »

Имеется ввиду, что все три числа одинаковые, например "111", "222". Ну или "ааа". Я неправильно выразился как обычно, имелось ввиду не число, а цифра.

Если просто три числа, например, "123", то все, конечно, тривиально - [0-9]{3}. А вот как с повторяющимися? На самом деле я не уверен, что такой шаблон вообще существует.
Аватара пользователя
sobomax
Маньяк
Сообщения: 3699
Зарегистрирован: 29 июн 2006, 22:53
Откуда: Vancouver

Re: Регулярные выражения

Сообщение sobomax »

Zy писал(а):Имеется ввиду, что все три числа одинаковые, например "111", "222". Ну или "ааа". Я неправильно выразился как обычно, имелось ввиду не число, а цифра.

Если просто три числа, например, "123", то все, конечно, тривиально - [0-9]{3}. А вот как с повторяющимися? На самом деле я не уверен, что такой шаблон вообще существует.
0{3}|1{3}|2{3}|3{3}|4{3}|5{3}|6{3}|7{3}|8{3}|9{3}

-Maxim
Zy
Маньяк
Сообщения: 4706
Зарегистрирован: 20 янв 2005, 19:11

Re: Регулярные выражения

Сообщение Zy »

Ну, типа, да, спасибо! Я до этого как-то не додумался.

С другой стороны изначально вопрос был о как бы ip-адресе вида 111.222.333.444 (неважно, что он нереальный), т.е. шаблон получается ((0{3}|1{3}|2{3}|3{3}|4{3}|5{3}|6{3}|7{3}|8{3}|9{3})\\.){3}(0{3}|1{3}|2{3}|3{3}|4{3}|5{3}|6{3}|7{3}|8{3}|9{3})

Что несколько настораживает своим размером! Может, они имели ввиду что-то более изящное? А может быть, и нет. Может, на шару спросили.

Спасибо, Максим!
Аватара пользователя
Весенняя
Завсегдатай
Сообщения: 286
Зарегистрирован: 10 окт 2008, 21:15

Re: Регулярные выражения

Сообщение Весенняя »

:)

Вот это для 3-х одинаковых идущих подряд букв или цифр: ([\d|\w])\1{2}

Вот для 4-х одинаковых или разных групп из 3-х одинаковых букв или цифр, разделенных точками: ([\d|\w])\1{2}\.([\d|\w])\2{2}\.([\d|\w])\3{2}\.([\d|\w])\4{2}

(Это с "back references")
Zy
Маньяк
Сообщения: 4706
Зарегистрирован: 20 янв 2005, 19:11

Re: Регулярные выражения

Сообщение Zy »

Гениально!

Спасибо!
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Re: Регулярные выражения

Сообщение папа Карло »

Zy писал(а):Ну, типа, да, спасибо! Я до этого как-то не додумался.

С другой стороны изначально вопрос был о как бы ip-адресе вида 111.222.333.444 (неважно, что он нереальный), т.е. шаблон получается ((0{3}|1{3}|2{3}|3{3}|4{3}|5{3}|6{3}|7{3}|8{3}|9{3})\\.){3}(0{3}|1{3}|2{3}|3{3}|4{3}|5{3}|6{3}|7{3}|8{3}|9{3})

Что несколько настораживает своим размером! Может, они имели ввиду что-то более изящное? А может быть, и нет. Может, на шару спросили.

Спасибо, Максим!
ИП адрес можно описать примерно так: \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
Zy
Маньяк
Сообщения: 4706
Зарегистрирован: 20 янв 2005, 19:11

Re: Регулярные выражения

Сообщение Zy »

"Примерно" в данном случае не интересовало.
Аватара пользователя
Mel'nik
Завсегдатай
Сообщения: 407
Зарегистрирован: 22 май 2007, 19:09
Откуда: Burnaby

Re: Регулярные выражения

Сообщение Mel'nik »

(.)\1+
Zy
Маньяк
Сообщения: 4706
Зарегистрирован: 20 янв 2005, 19:11

Re: Регулярные выражения

Сообщение Zy »

Это любое количество повторяющихся символов, следует из алгоритма Весенней.
Ответить