2016-01-27 2 views
2

Я ищу конкретную последовательность чисел в строке. Я могу лучше всего объяснить на примере:Regex: найти последовательность переменных чисел

00001 # first search criteria - line 1 
00010 # second search criteria - line 2 

Так каждая строка имеет 5 цифр 0 или 1. Я ищу комбинации всех 0 1 разряда за исключением того, может быть 1. Это 1 может быть в любом положении из 5 цифр.

Код регулярных выражений У меня есть 5 цифр 0 является

^((0\s*?){5}) # there may be spaces between the numbers 

линии 1 случай выше будет выбрано с следующим регулярным выражением кода:

^((0\s*?){4})\s*(1) 

Моим вопросом, как я мог бы написать в regex code изменяет положение 1, чтобы покрыть 5 случаев/позиций. Спасибо.

ответ

1

Вы можете использовать регулярное выражение опережения на основе этого:

^(?=[0\s]*1[0\s]*$)(?:\s*[01]\s*){5}$ 

RegEx Demo

LOOKAHEAD (?=[0\s]*1[0\s]*$) будет обеспечивать только одного 1 в любом положении на входе, где, как (?:\s*[01]\s*){5} убедитесь, что вход имеет только 0 и 1 с 5-значной длиной, также позволяющей белым пространством в любом месте.

+0

Если нет пробелов между числами, это работает. Как я могу настроить, чтобы указать пробелы (даже табуляции), как я уже говорил? – user1739581

+1

Это работает очень хорошо! – user1739581

1

Вы можете использовать два условных обозначения.
Первый страховщик 1 не найден снова.
Второй страховщик 1 не найден.

(?:((?(1)(?!))1)|0){5}(?(1)|(?!))

Expanded

(?: 
     (       # (1 start) 
      (?(1) (?!)) 1 
    )        # (1 end) 
    | 0 
){5} 
(?(1) | (?!)) 
Смежные вопросы