2013-07-31 2 views
1

은 이제 나는 다음과 같은 문자열 법적 문자 목록을 반환 할 수 있습니다정규식 패턴의 모든 문자 NOT을 찾을

legals = re.compile("[abc]") 

법적 문자 정규식 있다고 가정 해 봅시다 regex를 사용하여 정규식에없는 문자 목록을 찾으십니까? IE 내 경우는

['d','e','f','g'] 

편집 반환 : 명확히하기를, 나는 정규식 자체를 수정하지 않고 할 수있는 방법을 찾기 위해 바라고 있어요.

+0

비효율적 솔루션,하지만 합법적 인 문자 목록을 생성하고 모든 문자 목록에서 해당 목록을 뺍니다 – StephenTG

답변

6

는 문자 클래스를 무효 :

>>> illegals = re.compile("[^abc]") 
>>> finder = re.finditer(illegals, "abcdefg") 
>>> [match.group() for match in finder] 
['d', 'e', 'f', 'g'] 

당신이 (당신은 길이가 일치 한 문자 상대하고) 그렇게 할 수없는 경우, 수 거의 확실히

>>> legals = re.compile("[abc]") 
>>> remains = legals.sub("", "abcdefg") 
>>> [char for char in remains] 
['d', 'e', 'f', 'g'] 
+0

+1 더 빠름;) – Tadeck

+2

그가 정규 표현식을 모르는 경우, 즉 'legals' 변수 만 가질 수 있습니까? – freakish

+0

나는 그것이 정규식 자체를 바꾸지 않고 할 수 있는지 의문이라고 생각한다. – arshajii

관련 문제