한정자 *
이 '0 번 이상'을 나타내면 "aabbcc"[/ab*/]
은 "abb"
을 반환해야하지만 "a"
만 반환합니다."aabbcc"[/ ab * /]가 "a"만 반환하는 이유는 무엇입니까?
답변
좋아요. 가장 왼쪽의 일치가 이기고 이 하나이기 때문에 반환되는 내용은 abb
입니다.
ruby regexp를 테스트 할 수있는 아주 좋은 자료는 http://rubular.com/입니다. 앞에서 언급했듯이 regex는 첫 번째 일치 항목을 반환하고 ab *는'ab'와 'a'를 찾습니다. 또한 regex는 기본적으로 욕심이 많으므로/a * c /는'aabbcc '와 일치합니다 (중괄호를 매칭 할 때 성가신 경우 가끔씩 중괄호를 닫는 문자열이 아닌 문자열의 마지막 중괄호와 일치하게됩니다.) – Tigraine
@Tigraine : \\ (.*?\)/'또는'/ \ ([^ \)] * \) /' –
@Tigraine :' "aabbcc"[/ a * c /]' 'c'를 반환합니다. – maml
정규식은 사용자가 물어 본 것과 정확히 일치합니다 : 1 a
의 첫 번째 발생 다음에 0 이상 b
이옵니다. 모든 비 중복 발행 수를 원하는 경우
, 당신은 scan
사용할 수 있습니다
"aabbcc".scan(/ab*/)
#=> ["a", "abb"]
을 당신이 적어도 1 b
를 원한다면, 당신은 b+
사용할 수 있습니다
"aabbcc"[/ab+/]
#=> "abb"
왜? ''a ''는'b'가 0 번 이상 포함되어 있지 않습니까? –