2015-01-23 2 views
-2

Я нашел рубашку с некоторым регулярным выражением на ней, которая должна быть кошельком. Может кто-нибудь объяснить, как это можно перевести на «2b или не 2b»?логический оператор со сложным синтаксисом

/((bb)|(b|b[^b]|[^b])*b?)/ 
+0

Почему, по вашему мнению, это * логическое * утверждение? Похоже на регулярное выражение. – crashmstr

+0

У вас есть несбалансированные круглые скобки. –

ответ

1

Это регулярное выражение (регулярное выражение).

В регулярных выражениях Perl / обозначает начало или конец регулярного выражения. | означает «или» и ^ означает «нет». Скобки обозначают группу, в которой порядок содержания и квадратные скобки обозначают группу, где порядок содержимого не имеет значения. ? означает совпадение с предыдущим шаблоном один или несколько раз.

Получая строку,

(bb) 

точно соответствует строке bb. Это та часть, которая обозначает «быть».

(b|b[^b]|[^b])*b? 

В группе, она соответствует b или b с последующим любым символом, кроме b, или просто любой символ, отличный от b. Добавление * до конца этой группы соответствует ему 0 или более раз. b? на конце означает, что у вас есть завершающий b, или нет. Это должно означать «не быть», хотя с этой частью можно также сопоставить bb.

У вас есть посторонний закрытый контакт ) после ?.

Цитата Шекспира «быть или не быть», стилизованная под «2b или не 2b».

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