16 진수 또는 정규 표현식을 사용하지 않고 문자열 유효성을 검사합니다.정규 표현식을 사용하여 16 진수 문자열을 확인하십시오.
사용 된 표현은 ^[A-Fa-f0-9]$
입니다. 이것을 사용하면 문자열 AABB10
이 유효한 16 진수로 인식되지만 문자열 10AABB
은 유효하지 않은 것으로 인식됩니다.
어떻게 문제를 해결할 수 있습니까?
16 진수 또는 정규 표현식을 사용하지 않고 문자열 유효성을 검사합니다.정규 표현식을 사용하여 16 진수 문자열을 확인하십시오.
사용 된 표현은 ^[A-Fa-f0-9]$
입니다. 이것을 사용하면 문자열 AABB10
이 유효한 16 진수로 인식되지만 문자열 10AABB
은 유효하지 않은 것으로 인식됩니다.
어떻게 문제를 해결할 수 있습니까?
대부분 +
이므로 regex = '^[a-fA-F0-9]+$'
이 필요합니다. 그러나 문자열의 시작 부분에 선택적인 0x
과 같은 것을 생각하면 (아마도)주의해야합니다. ^(0x|0X)?[a-fA-F0-9]+$'
이됩니다.
'^ (0x | 0X) *'는'(0 [xX])? '이어야합니다. 그렇지 않으면 표준 16 진수 문자열이 아닌 "0x0x0x0x1234abcd"와 일치합니다. 내 ans을 참조하십시오 –
@ PreetKukreti 사실, 좋은 잡기. 내 대답을 업데이트 할게. – Yuushi
^[A-Fa-f0-9]+$
이 작동 +
일치 1
이상의 문자한다. 파이썬을 사용하여
:
In [1]: import re
In [2]: re.match?
Type: function
Base Class: <type 'function'>
String Form:<function match at 0x01D9DCF0>
Namespace: Interactive
File: python27\lib\re.py
Definition: re.match(pattern, string, flags=0)
Docstring:
Try to apply the pattern at the start of the string, returning
a match object, or None if no match was found.
In [3]: re.match(r"^[A-Fa-f0-9]+$", "AABB10")
Out[3]: <_sre.SRE_Match at 0x3734c98>
In [4]: re.match(r"^[A-Fa-f0-9]+$", "10AABB")
Out[4]: <_sre.SRE_Match at 0x3734d08>
이상적으로 당신은 ^(0[xX])?[A-Fa-f0-9]+$
같은 그래서 당신이 '+'를 잊지 마십시오 0x1A2B3C4D
In [5]: re.match(r"^(0[xX])?[A-Fa-f0-9]+$", "0x1A2B3C4D")
Out[5]: <_sre.SRE_Match at 0x373c2e0>
같은 포맷 일반적인 0x
와 문자열에 일치시킬 수 있습니다 할 수 있습니다? "^ [A-Fa-f0-9] + $"시도 중
처음에는 '^ [A-Fa-f0-9] + $'여야합니까? –