2011-01-27 5 views

답변

5

이 그것을 수행해야합니다

valid_sha1 = !((str =~ /\b[a-f0-9]{32,}\b/i).nil?) 
+0

:-) :-) 우리는 동시에 우리의 답을 입력하고있었습니다. –

+0

단어가 모두 문자와 숫자로 구성되도록 요구할 수 있습니까? (단지 어느 쪽도 아니다.) – dan

+0

나는 이것이 충분하고 시간의 99.99 퍼센트를 움직일 것이다 고 생각한다. – dan

2

다음 정규 표현식을 사용할 수 있습니다.

s =~ /^[a-f0-9]{32,32}$/i 
+1

'{32,32}'는 (는)'{32} '로 작성할 수 있습니다. 그리고 Jacob은 전체 행 *이 32 문자 16 진수로 구성되도록 요구하지 않고 더 긴 행에서 단어를 찾으려고하기 때문에'^'및'$'대신'\ b' 앵커를 사용합니다. –

1

모두 다른 답변은 선이 SHA1로 시작해야합니다. SHA1이 라인에서 어느 곳이 될 수 있다면, 당신은 단지 하나 개의 번호를 지정하는 경우로서 당신은 또한 정확하게 많은 일치해야합니다, 중괄호에서 두 번째로 (32)를 필요로하지 않는 ^

/[a-f0-9]{32}/i 

를 제거합니다.

+0

다른 게시물에 대한 게시물의 내용을 반영하여 게시 한 이후 다른 답변이 수정되었습니다^및 불필요한, 32 – xaxxon

+0

조심하십시오. 첫 번째에 ^를 붙이지 않고 끝에 $를 붙이지 않으면 (내 대답은 깜빡하지만 지금 편집 한 것입니다.) 패턴은 32 자보다 긴 단어와 일치합니다. –

0

당신이 정말로, 당신은 긍정적 예측 사용할 수 있습니다 (위의 요구로) 단어 문자와 숫자를 모두 구성해야 할 경우 사용하지 않고,

sha_array = line.scan(/(?=.{0,31}\d)(?=.{0,31}[a-f])\b[\da-f]{32}\b/i) 

(?= 검사 사전에 조건을 아무것도.

관련 문제