2012-10-24 3 views
1

다음과 같은 함수를 사용하여 .html 파일을 읽고 <input> 태그를 검색하고 <input type='hidden'> 태그를 페이지에 표시 할 문자열에 삽입해야합니다. 하지만 그 조건은 결코 충족되지 않습니다. (예 : if 문은 실행되지 않습니다.) 정규 표현식의 문제점은 무엇입니까? 정규 표현식이 예상대로 동작하지 않습니다.

def print_choose(params, name): 

    filename = path + name 
    f = open(filename, 'r') 
    records = f.readlines() 
    print "Content-Type: text/html" 
    print 
    page = "" 
    flag = True 
    for record in records: 
     if re.match('<input*', str(record)) != None: 
      print record 
      page += record 
      page += "<input type='hidden' name='pagename' value='psychology' />" 
     else: 
      page += record 

    print page 

답변

5

re.match 시작 (PS 정규식 디버깅 regexpal 체크 아웃). 문자열 가운데에있는 패턴과 일치 할 수있는 re.search을 원하지 않습니까?

3
if re.match('<input*', str(record)) != None: 

당신은 아마 <input.*을 원하는 감사드립니다. 지금은 <inputttttttttt에 일치하지만 <input>blahblah에는 일치하지 않습니다. .은 임의의 문자를 나타내고 *는 0을 나타내거나 정규 표현식의 마지막 항목과 일치하므로 .*은 0 개 이상의 문자에서 반복적으로 와일드 카드 일치를 묻습니다.

문자열의 첫 번째 문자에서

+1

사실이지만 'if'가 트리거되지 않는 이유는 아닙니다. – DSM

+0

그것은 작동하지 않습니다 ... – cybertextron

+0

@ DSM 아마도 커크의 대답 때문입니다. –

관련 문제