길이가 3 또는 6 일 수있는 패턴에 대해 문자열을 확인하려고합니다. 그들 사이의 가치가 아닙니다.
다음은 문자열입니다.
color: #FfFdF8; background-color:#aef;
#
길이가 3 또는 6이고 문자열의 시작 부분에 있지 않은 경우 16 진수 코드로 시작하는 모든 하위 문자열을 얻고 싶습니다 . 이 경우 #FfFdF8
및 모두 #aef
반환되어야합니다.
이 패턴을 작성했습니다.
r'^(?!#).+(#[a-fA-F0-9]{6}).*|^(?!#).+(#[a-fA-F0-9]{3}).*'
그러나 준 [('#FfFdF8', '')]
의 결과로 re.findall
.
먼저 문자열이로 시작하는지 확인 #
하고 그렇지 않은 경우 #...
하위 문자열을 추출 할 수 있습니다 .
import re
results = []
s = 'color: #FfFdF8; background-color:#aef;'
if not s.startswith('#'):
results = re.findall(r'#[a-fA-F0-9]{3}(?:[a-fA-F0-9]{3})?\b', s)
print(results) # => ['#FfFdF8', '#aef']
regex 데모 및 Python 데모를 참조하십시오 .
정규식 세부 정보
#
- #
문자[a-fA-F0-9]{3}
-3 개의 16 진수 문자(?:[a-fA-F0-9]{3})?
-3 개의 16 진수 문자의 선택적 시퀀스\b
-단어 경계 (오른쪽에 더 이상 16 진수 문자가 허용되지 않음)이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다