RegEx - Тестирование на 9 смежных идентичных номеров - PullRequest
3 голосов
/ 18 июля 2011

Я пытаюсь проверить строку (в java) для 9 соседних идентичных номеров ... Я могу проверить для соседних идентичных номеров - но только для следующего соседнего числа ....

boolean result = string.matches("/([0-9])\1/g");

Я хочу сопоставить 9 символов - кто-нибудь сможет мне помочь?

Спасибо

РЕДАКТИРОВАТЬ: Некоторые примеры

"1111111111" should match

"222222222" should match

"3311111111133" should match

"1234567890" should not match

Ответы [ 3 ]

6 голосов
/ 18 июля 2011

Попробуйте это регулярное выражение: ([0-9])\1{8}

3 голосов
/ 18 июля 2011

Квантификатор Java Greedy:

X{n} мэтч: X, ровно n раз

X будет любым числом = [0-9], а n будет 9

([0-9]{9})

редактировать:

Это будет соответствовать 9 одинаковым номерам:

([0-9]\1{8})

[0-9] станков под любым номером

\1 - первый матч, который выполняется

\1{8} соответствует 8 раз первого матча

0 голосов
/ 28 марта 2016

Я нашел ответ Кирилла Полищука хорошо и хорошо.Однако в редких случаях, если вам нужно напечатать 9 соседних символов, разделенных пробелами (как в текстовом файле), вы можете сделать следующее:

Ввод:

1111111111 4444444444 4455555555558899 567833333333339

Регулярное выражениеможет быть изменено следующим образом:

'([0-9]) ?\1{8}' Если между столбцами есть только один пробел.или

'([0-9]) *\1{1}' Если у вас есть неравное количество пробелов между столбцами.

Если вы хотите использовать с grep, вы можете сделать это следующим образом:

grep -E '([0-9]) ?\1{8}'

или

grep -E '([0-9]) *\1{8}'

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...