정규식과 문자열을 일치 시키려고하는데 작동하지 않습니다.
제가하려는 것은 간단합니다. 사용자가 다양한 페이지 또는 단일 페이지를 유도하는 전형적인 상황입니다. 나는 문자열을 읽고 그것이 올바른지 확인하고 있습니다.
페이지 범위에 대해 내가 기대하는 표현은 다음과 같습니다. 1-3, 5-6, 12-67
단일 페이지에 대해 기대하는 표현은 다음과 같습니다. 1,5,6,9,10,12
이것이 내가 지금까지 한 일입니다.
pagesOption1 = re.compile(r'\b\d\-\d{1,10}\b')
pagesOption2 = re.compile(r'\b\d\,{1,10}\b')
첫 번째 표현은 작동하지만 두 번째 표현은 작동하지 않는 것 같습니다.
그리고, 사용자의 출시 역시 뭔가를 좋아한다면, 어떤면에서?, 하나의 정규 표현식에 둘을 병합 할 수있을 것 1-2, 7-10
또는 같은 3,5,6,7
표현이 좋은으로 recogniced됩니다.
이 정규식은 작동합니다-
^(?:(\d+\-\d+)|(\d+))(?:\,[ ]*(?:(\d+\-\d+)|(\d+)))*$
여기에서 데모
이 테스트-
>>> test_vals = [
'1-3, 5-6, 12-67',
'1,5,6,9,10,12',
'1-3,1,2,4',
'abcd',
]
>>> regex = re.compile(r'^(?:(\d+\-\d+)|(\d+))(?:\,[ ]*(?:(\d+\-\d+)|(\d+)))*$')
>>> for val in test_vals:
print val
if regex.match(val) == None:
print "Fail"
else:
print "Pass"
1-3, 5-6, 12-67
Pass
1,5,6,9,10,12
Pass
1-3,1,2,4.5
Fail
abcd
Fail
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다