2011-01-24 4 views
1

학교용 웹 응용 프로그램을 개발 중이며 class_name 및 course_name과 같은 것들이 있습니다. course_name은 class_name의 상위이며 따라서 class_name에는 course_name이 있어야합니다. 예 :정규식을 사용하여 문자열의 기호를 어떻게 검색합니까?

course_name = "Weeklies" 
class_name = "Weeklies talks with Superstars" 

위의 사례는 완벽하고 정확합니다.

그러나 class_name (\ b \ b)으로 설정 한 단어 경계 정규 표현식을 엉망으로 만드는 기호가있는 course_name을 만드는 경우가 있습니다. course_name에 정규 표현식의 메타 문자가 있으면 기호가 단어가 아니므로 단어 경계가 매번 False를 반환합니다.

질문 : COURSE_NAME 파이썬의 심볼/메타 문자를 포함하고 않는 경우, 나는 사실 다른 False를 반환 할 경우

는 어떻게 확인합니까?

마가 복음은

+0

이것은별로 좋은 냄새가 아닙니다. (1)이 정보로 데이터베이스를 구축하고 있습니까? 데이터를 csv 파일의 행에 넣고 직접로드 할 수 있습니까? (2)이 데이터는 구성 파일에 존재합니까? .INI 파일일까요? ConfigParser를 사용하여 파싱하거나 json으로 파일을 작성합니다. (3) 개발자가이 데이터를 일부 제어 할 수 있습니까, 아니면 사용자가 작성한 것입니까? – hughdbrown

+0

그것은 사용자가 제어합니다. 따라서 사용자가 "Weekelies (Screening)"을 course_name으로 만들고 my \ bWeeklies (Screening) \ b 정규식을 사용하면 괄호가 단어가 아니므로 실패합니다. 문자열에서 기호/메타 문자를 어떻게 검색합니까? 나는 사용자가 그 안에 기호와 메타 문자가있는 course_name을 입력하지 못하도록하고 싶다. – Mark

답변

1
+0

안녕하세요 Ignacio, 빠른 답장을 보내 주셔서 감사합니다. 역 슬래시가 아닌 문자열을 반환하고 싶지 않습니다. 메타 문자가 포함되어 있는지 확인하고 싶습니다. 위의 내 의견을 참조하십시오. – Mark

0

이 그냥 적절한 문법과 정규 표현식을 대체 ... 범용 솔루션의 일종이다.

if not re.match(str, r'[\w\d\ ]+'): 
    # valid 
관련 문제