Страница 1 из 1

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

Добавлено: 16 июн 2009, 16:04
Zy
Возник такой вот вопрос, не могу ничего придумать.

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

В первые пять секунд кажется, что ничего умного, а в последующие два часа ничего в голову не приходит. Я вообще-то в regex не большой специалист, но все же.

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

Добавлено: 16 июн 2009, 19:09
spavel
202020 например удовлетворяет условиям или толъко один 'знак' используется ?

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

Добавлено: 16 июн 2009, 19:22
badger
Один знак -- это цифра, а речь вроде бы о числе. Хотя может быть Zy именно цифры имел в виду? Иначе, действительно, 202020 один из вариантов.

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

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

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

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

Добавлено: 16 июн 2009, 20:33
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

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

Добавлено: 16 июн 2009, 20:44
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})

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

Спасибо, Максим!

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

Добавлено: 16 июн 2009, 21:59
Весенняя
:)

Вот это для 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")

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

Добавлено: 17 июн 2009, 06:40
Zy
Гениально!

Спасибо!

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

Добавлено: 17 июн 2009, 09:19
папа Карло
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}

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

Добавлено: 17 июн 2009, 09:36
Zy
"Примерно" в данном случае не интересовало.

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

Добавлено: 17 июн 2009, 11:50
Mel'nik
(.)\1+

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

Добавлено: 17 июн 2009, 11:55
Zy
Это любое количество повторяющихся символов, следует из алгоритма Весенней.