2015-03-12 2 views
1

Мне нужны регулярные выражения для соответствия приведенному ниже случаю.регулярное выражение для соответствия 4 или более одинаковым символам

4 или более последовательных идентичных символов/номеров; например 1111, аааа, BBBB, 2222 и т.д.

Я попробовал этот шаблон, соответствующий

Pattern pattern = Pattern.compile("([a-z\\d])\\1\\1", Pattern.CASE_INSENSITIVE); 

Но я обнаружил, что он соответствует только 3 или более одинаковых символов.

  1. Пожалуйста, дайте мне знать, какое изменение мне нужно, чтобы оно соответствовало 4 или более одинаковым символам.

  2. Также мне нужно проверить специальный символ «\». Пожалуйста, скажите мне, как мне нужно добавить в заявление соответствия шаблону ... мне нужно указать как «\\»?

ответ

1

Вам нужно добавить еще один обратной ссылки:

Pattern pattern = Pattern.compile("([a-z\\d])\\1\\1\\1", Pattern.CASE_INSENSITIVE); 

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

+0

Может ли оно быть короче в Java, как и другие языки i.e. '(.) \ 1 {3,}'? – heemayl

1

Вы можете быть в состоянии использовать {3}, а также ...

"([a-z\\d])\\1{3,}" 

вместо добавления \\ 1 несколько раз (не пробовал это в Java).

+0

Я думаю, что это будет '([a-z \\ d]) \\ 1 {3,}' – heemayl

+0

yep, я думаю, что вы правы, исправите – Les

Смежные вопросы