Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > Найти символы в строке


Автор: garden 7.10.2011, 00:21
Доброй ночи.
Помогите, пожалуйста, составить выражение для поиска символов в строке.

Есть 2 строки:

Цитата

0001111000
0001110000


Мне необходимо составить регулярное выражение, для поиска только трех единиц.
Т.е. вторая строка верная, первая нет.

Автор: ayax2005 7.10.2011, 08:39
как-то так [^1]+(1{3}){1}[^1]+

Автор: Evghenusi 7.10.2011, 13:19
ayax2005, http://www.regexpr.ru/?pattern=%2F%5B%5E1%5D%2B%281%7B3%7D%29%7B1%7D%5B%5E1%5D%2B%2F&subject=0001111000%0D%0A0001110000? 

Автор: ayax2005 7.10.2011, 13:22
Evghenusi,  расскажу один секрет - по твоей ссылке проверка идёт всего текста, а не построчно)
Проверяй поочерёдно. Я писал в kiki.


Автор: Evghenusi 7.10.2011, 13:23
а я предлагаю такой варЬЯнт :  /^(0+|1{3}|[^1])+$/m  , хотя наверно есть и более красивое решение.

Добавлено через 1 минуту и 28 секунд
Цитата(ayax2005 @  7.10.2011,  13:22 Найти цитируемый пост)
а не построчно

/[^1]+(1{3}){1}[^1]+/m так?  smile 

понял я, понял.

Добавлено через 3 минуты и 45 секунд
хотя если будет 6 единиц, мой вариант подведёт

Автор: Evghenusi 7.10.2011, 13:50
можно наверно мою сократить /^(1{3}|[^1])+$/m

Автор: ayax2005 7.10.2011, 13:56
Evghenusi,  1110000111?

Автор: Evghenusi 7.10.2011, 18:24
Цитата(ayax2005 @  7.10.2011,  13:56 Найти цитируемый пост)
1110000111? 

Цитата(Evghenusi @  7.10.2011,  13:23 Найти цитируемый пост)
хотя если будет 6 единиц, мой вариант подведёт 


P.S. кстати, ayax2005, если приглядеться, то ваше РВ не пропускает 1110000000 и 0000000111

Автор: cutwater 7.10.2011, 19:34
Код

[^1]*1{3}[^1]*

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)