re.findall("(100|[0-9][0-9]|[0-9])%", "89%")
이 결과는 [89]
결과 만 반환하며 전체 89 %를 반환해야합니다. 어떤 아이디어라도 제발 어떻게 만드시겠습니까?파이썬 - re.findall은 원치 않는 결과를 반환합니다
re.findall("(100|[0-9][0-9]|[0-9])%", "89%")
이 결과는 [89]
결과 만 반환하며 전체 89 %를 반환해야합니다. 어떤 아이디어라도 제발 어떻게 만드시겠습니까?파이썬 - re.findall은 원치 않는 결과를 반환합니다
사소한 솔루션 :
>>> re.findall("(100%|[0-9][0-9]%|[0-9]%)","89%")
['89%']
더 아름다운 해결책 :
>>> re.findall("(100%|[0-9]{1,2}%)","89%")
['89%']
미녀 솔루션 :
>>> re.findall("(?:100|[0-9]{1,2})%","89%")
['89%']
>>> re.findall("(?:100|[0-9][0-9]|[0-9])%", "89%")
['89%']
findall
반환 만 captu 캡처 그룹이 있습니다 빨간색 부분. 괄호가 캡처 그룹이되지 않게하려면 ?:
을 사용하십시오.
'100 | [0-9] [0-9] | [0-9]'를'\ d {1,3}'로 변경하면 패턴의 의도가 바뀌겠습니까? – Bryan
내부 그룹과 비 캡처 그룹 외부 그룹을 사용
>>> re.findall("((?:100|[0-9][0-9]|[0-9])%)","89%")
['89%']
이 문자열 확인을; ''89 %'' –