Помогите составить регулярное выражение

markus3252364625325

Новичок
Здравствуйте. Помогите составить регулярное выражение для поиска строки с повторяющимеся цифрами
 

antson

Новичок
Партнер клуба
учись пользоваться гуглей. вот что нарылось


Обратные ссылки
Рассмотрим задачу поиска слов, содержащих три одинаковые гласных буквы подряд. Наивное решение [аеёиоуэюя]{3}, использующее квантификаторы, не будет работать, поскольку такому шаблону соответствуют строки с тремя подряд идущими гласными, но необязательно одинаковыми. Чудовищное решение с полным перечислением альтернатив, ааа|еее|ёёё|иии|ооо|ууу|эээ|ююю|яяя, мы с негодованием отвергаем: ведь стоит взять другой, более обширный символьный класс, или заменить тройку в квантификаторе на большее значение, как размер шаблона катастрофически вырастет.

Тем не менее возможно элегантное решение, использующее группы захвата. Захватим гласную в группу, а затем сошлёмся на содержимое буфера захвата. Ссылки на первый, второй, третий буферы записываются в регулярном выражении как \g1, \g2, \g3. Итак, решением будет шаблон ([аеёиоуэюя])\g1{2}. Обратите внимание, что ссылка на буфер захвата должна следовать в регулярном выражении строго после соответствующей группы.

Обратные ссылки могут ссылаться не только на нумерованные буферы, но и на именованные. Такие ссылки имеют вид \k<name>, где, опять же таки, вместо name стоит конкретное имя. Наш пример можно переписать, применяя именованные группы: (?<vowel>[аеёиоуэюя])\k<vowel>{2} (vowel — гласная).
 

fixxxer

К.О.
Партнер клуба
PHP:
>>> preg_match_all('/(?<digit>\d)(\k<digit>)+/', 'aaa00011233', $m); $m[0]
=> [
       "000",
       "11",
       "33"
   ]
 

markus3252364625325

Новичок
Либо можно ли составить sql запрос чтобы было например что-то вроде этого?

SELECT * FROM table WHERE SUBSTR(number,8,1) = SUBSTR(number,12,1) = SUBSTR(number,16,1), а не
SELECT * FROM table WHERE SUBSTR(number,8,1) = SUBSTR(number,12,1) AND SUBSTR(number,8,1) = SUBSTR(number,16,1)
 

AmdY

Пью пиво
Команда форума
давай тогда начнём с того зачем тебе это надо?
 

markus3252364625325

Новичок
давай тогда начнём с того зачем тебе это надо?
Нужно сделать подбор по маске. Например есть строки 1534-5576 и 1234-2312 и форма в которую вводят символы например "A". A - это любое число. Смысл в том, чтобы искать строки где например четвертый символ равен третьему и равен шестому.
 

AmdY

Пью пиво
Команда форума
Тогда тебе не нужны регулярки, разбей строку на массив и в цикле пройдись по нему, а там ифами сравнивай с предудущим или следующим значениям. Регулярками у тебя получится ад, который если и напишешь, то поддерживать не сможешь.
 

antson

Новичок
Партнер клуба
Нужно сделать подбор по маске. Например есть строки 1534-5576 и 1234-2312 и форма в которую вводят символы например "A". A - это любое число. Смысл в том, чтобы искать строки где например четвертый символ равен третьему и равен шестому.
не понял а что должно равняться A ?
 
Сверху