나는 그것을 IP 주소로 변환하기 위해 8 개의 이진수 4 세트를 잡는 것으로 가정하는 기능이 있습니다. 이 정규식이 있습니다.
def convert_to_decimal(binary_string)
octet1,octet2,octet3,octet4 = /(\d{8})/.match(binary_string).captures
puts octet1
puts octet2
puts octet3
puts octet4
end
이 정규식을 루블 형식으로 테스트 한 결과 10000000001000000000101000000001 문자열로 테스트 할 때 4 개의 일치 항목이 있음을 확인했습니다. 그러나 실제로 루비 코드를 실행하면 처음 8 개의 숫자 집합 만 얻습니다. 여기서 무엇이 잘못 되었습니까?
사용 String#scan
하는 대신 :
def convert_to_decimal(binary_string)
octet1,octet2,octet3,octet4 = binary_string.scan /\d{8}/
puts octet1
puts octet2
puts octet3
puts octet4
end
convert_to_decimal('10000000001000000000101000000001')
산출:
10000000
00100000
00001010
00000001
를 사용하려면 일치하지 않는 캡처 된 그룹의 배열을 반환 MatchData#captures
하므로 캡처 된 그룹 4 개를 포함하도록 정규식을 수정합니다 MatchData#captures
.
octet1,octet2,octet3,octet4 =
/(\d{8})(\d{8})(\d{8})(\d{8})/.match(binary_string).captures
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다