글자와 숫자가 모두 포함되어 있고 길이가 일정한 줄에 "단어"를 감지하는 정규식이 필요합니다. 812d555c726d10c77b05cd164705665a
. 목표는 sha1 다이제스트를 포함하는 라인을 탐지하는 것입니다.글자와 숫자가 모두 포함 된 줄에서 "단어"를 어떻게 감지합니까?
정규 표현식 만 너무 어려울 경우 Ruby 솔루션이 정상입니다.
글자와 숫자가 모두 포함되어 있고 길이가 일정한 줄에 "단어"를 감지하는 정규식이 필요합니다. 812d555c726d10c77b05cd164705665a
. 목표는 sha1 다이제스트를 포함하는 라인을 탐지하는 것입니다.글자와 숫자가 모두 포함 된 줄에서 "단어"를 어떻게 감지합니까?
정규 표현식 만 너무 어려울 경우 Ruby 솔루션이 정상입니다.
이 그것을 수행해야합니다
valid_sha1 = !((str =~ /\b[a-f0-9]{32,}\b/i).nil?)
다음 정규 표현식을 사용할 수 있습니다.
s =~ /^[a-f0-9]{32,32}$/i
'{32,32}'는 (는)'{32} '로 작성할 수 있습니다. 그리고 Jacob은 전체 행 *이 32 문자 16 진수로 구성되도록 요구하지 않고 더 긴 행에서 단어를 찾으려고하기 때문에'^'및'$'대신'\ b' 앵커를 사용합니다. –
모두 다른 답변은 선이 SHA1로 시작해야합니다. SHA1이 라인에서 어느 곳이 될 수 있다면, 당신은 단지 하나 개의 번호를 지정하는 경우로서 당신은 또한 정확하게 많은 일치해야합니다, 중괄호에서 두 번째로 (32)를 필요로하지 않는 ^
/[a-f0-9]{32}/i
를 제거합니다.
다른 게시물에 대한 게시물의 내용을 반영하여 게시 한 이후 다른 답변이 수정되었습니다^및 불필요한, 32 – xaxxon
조심하십시오. 첫 번째에 ^를 붙이지 않고 끝에 $를 붙이지 않으면 (내 대답은 깜빡하지만 지금 편집 한 것입니다.) 패턴은 32 자보다 긴 단어와 일치합니다. –
당신이 정말로, 당신은 긍정적 예측 사용할 수 있습니다 (위의 요구로) 단어 문자와 숫자를 모두 구성해야 할 경우 사용하지 않고,
sha_array = line.scan(/(?=.{0,31}\d)(?=.{0,31}[a-f])\b[\da-f]{32}\b/i)
(?=
검사 사전에 조건을 아무것도.
:-) :-) 우리는 동시에 우리의 답을 입력하고있었습니다. –
단어가 모두 문자와 숫자로 구성되도록 요구할 수 있습니까? (단지 어느 쪽도 아니다.) – dan
나는 이것이 충분하고 시간의 99.99 퍼센트를 움직일 것이다 고 생각한다. – dan