2014-04-15 3 views
0

파이썬에서 별표 확장 일치를 모방하고 싶습니다. 예를 들어 :파이썬 스크립트에서 일치하는 별표 확장 표현식 적용

34941000000 

을하지만 일치하지 :

3494ZXXXXXX 

은 일치합니다

34940000000 

내가 별표 (*)가 제공하는 매칭 연산자를 지원하고 싶습니다. 사용할 수있는 별표가 없으므로 AMI를 사용할 수 없습니다.

def asterisk_extension_match(extension, pattern): 
    '''Returns True if the extension matches the pattern, 
     according to the asterisk extension matching rules''' 
    # Compute matches 
    return matches 

이 패턴 매칭을 구현하는 모든 라이브러리 있는가, 또는 나는 정규 표현식에 또는 유사한을 사용하여 에뮬레이션해야합니까 : 그래서 내가 필요하면이 기능을 구현하는 방법은? 휠을 재발견해야합니까?

답변

1

정규식을 사용하여 xzn을 입력하면됩니다.
다음과 같이 시도하십시오.

import re 
def asterisk_extension_match(extension, pattern): 
    '''Returns True if the extension matches the pattern, 
     according to the asterisk extension matching rules''' 
    pattern = re.sub(r'x', '[0-9]', pattern, flags=re.I) 
    pattern = re.sub(r'z', '[1-9]', pattern, flags=re.I) 
    pattern = re.sub(r'n', '[2-9]', pattern, flags=re.I) 
    match = re.match(pattern, extension)   
    if match: 
     return match.group() 
+0

재미있을 것 같습니다. 이것이 가능한 모든 별표 매칭 패턴을 다루는 지 확실하지 않지만 그것을 시도 할 것입니다. 또한 일치하는 테이블을 제공하고 정규식을 미리 컴파일 할 계획입니다.이 방법을 사용하면 가능합니다. – dangonfast

관련 문제