2015-01-23 3 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가 아닙니다"로 양식화되었습니다.