[regex] 16 진수에 대한 정규식?

텍스트에서 16 진수를 감지하는 정규식을 어떻게 만듭니 까?

예 : ‘0x0f4’, ‘0acdadecf822eeff32aca5830e438cb54aa722e3’및 ‘8BADF00D’.



답변

다음은 어떻습니까?

0[xX][0-9a-fA-F]+

0으로 시작하고 그 뒤에 소문자 또는 대문자 x가 뒤 따르고 0-9, af 또는 AF 범위에있는 하나 이상의 문자가 뒤 따르는 표현식과 일치합니다.


답변

정확한 구문은 정확한 요구 사항과 프로그래밍 언어에 따라 다르지만 기본적으로 다음과 같습니다.

/[0-9a-fA-F]+/

또는 더 간단하게 i대소 문자를 구분하지 않습니다.

/[0-9a-f]+/i

운이 좋으면 Ruby를 사용할 수 있습니다.

/\h+/

편집 -Steven Schroeder의 답변으로 0x 비트에 대한 이해가 잘못되었음을 깨달았으므로 그에 따라 제안을 업데이트했습니다. 0x도 일치 시키려면 다음과 같습니다.

/0[xX][0-9a-fA-F]+/
/0x[0-9a-f]+/i
/0x[\h]+/i

추가 추가-0x 가 선택 사항이어야하는 경우 (질문에서 알 수 있듯이) :

/(0x)?[0-9a-f]+/i


답변

큰 문제는 아니지만 대부분의 정규식 엔진은 POSIX 문자 클래스를 지원 [:xdigit:]하며 일반적인 0-9a-fA-F것 보다 간단한 16 진 문자를 일치시키기위한 것이 있습니다.

따라서 요청 된 정규식 (즉, 선택 사항 포함 0x)은 다음 과 같습니다./(0x)?[[:xdigit:]]+/


답변

0x접두사 유무에 관계없이 일치 합니다.

(?:0[xX])?[0-9a-fA-F]+


답변

MD5 (예제 중 하나) 감지는 다음과 같이 수행 할 수 있습니다.

[0-9a-fA-F]{32}


답변

Perl 또는 PHP를 사용하는 경우

[0-9a-fA-F]

와:

[[:xdigit:]]


답변

기록을 위해 다음을 지정합니다.

/^[xX]?[0-9a-fA-F]{6}$/

가된다는 사실을 확인한다는 점에서 어느 다르다 가지고 우리가 하나가 여섯 개 유효한 문자와 경우에 소문자 나 대문자 X에를 포함 할 수 있습니다.