2014-09-21 4 views
2

이 정규 표현식이 문자열의 b과 일치하지 않는 이유는 무엇입니까?Ruby Regex *가 문자 시퀀스와 일치하지 않습니다.

'abbbbbbb'.match(/b*/) 
#=> #<MatchData ""> 

이 못하다 :

'abbbbbbb'.match(/b+/) 
#=> #<MatchData "bbbbbbb"> 
  • *의 정의는 "별표는 앞 요소의 제로 이상의 존재를 나타내는".
  • +의 정의는 다음과 같습니다. "더하기 기호는 이전 요소 중 하나 이상이 있음을 나타냅니다."

두 연산자의 유일한 차이점은 일치하는 숫자입니다. 둘 모두 7 b과 일치해야합니다.

+0

rubular.com을 사용하면 정규 표현식을 테스트 할 수있는 정규식 응용 프로그램이 있습니다. * – Schylar

+0

뒤에 b를 넣으면'b * '는 0 이상 b를 의미합니다. 2 경기가 없을거야? 아무것도 아니고'bbbb'? – Kamehameha

+0

''abbbbbbb '[/ b * /] => ""'는 문자열 시작 부분의 빈 문자열과 일치합니다. ''bbbbbbb '[/ b * /] =>'bbbbbbb ''. "abbbbbbb.scan (/ b * /) => [" ","bbbbbbb "," "]'도 참고하십시오. –

답변

4

버그가 아니며 방금 자신의 질문에 답변했습니다.

The definition of * is: "The asterisk indicates there is zero or more of the preceding element"

그래서 /b*/ 일치 전혀 B 문자가 존재하지 않는 경우.

+0

아 하! 네 말이 맞아. 고마워. 나는 적어도 '0'과 '적어도 1'이라고 읽었습니다! –

+0

글쎄, 그건 틀릴거야. 이 경우 나는 내가 무엇을 생각하고 있는지 알지 못한다 : D –

관련 문제