은 가정하자 나는regexy 구문이있는 문자열을 일치시키는 방법은 무엇입니까?
x = "spam ?and eggs"
같은 문자열을 가지고 그리고 그 "?and"
일치하도록 노력하고있어. 현재 다음과 같이하고 있습니다.
>>> print re.findall(re.escape('?and'), x)
['?and']
re.escape
의 올바른 사용 사례입니까? 그것은 다른 정규식 구문을 가질 수있는 다른 문자열 리터럴과 함께 작동합니까?
내 유스 케이스는 인수가 pexpect.spawn.expect(pattern)
인데, 여기서 입력 패턴은 정규식으로 컴파일 된 문자열 유형이 될 수 있습니다. 어떤 경우에는 내가 찾고있는 것이 정규식처럼 보일지도 모르지만 실제로는 일치시키고 자하는 문자열 리터럴입니다.
감사합니다. 왜 스스로 그것을 이스케이프 처리 하나의 백 슬래시를 제공하지만,'re.escape'를 사용하면 두 배가됩니까? 이 불일치에는 어떤 의미가 있습니까? re.escape를 사용 하겠지만 실제로는 내가 찾고있는 부분 문자열이 무엇인지 미리 알지 못하기 때문에 (그것은 무엇이든 될 수 있습니다). – wim
@wim : 나는 그것을 엉망으로 만들었고,'r '\?과''raw "문자열 리터럴을 지정했거나''\\? and '' ('\? and'를 포함하는 문자열을 의미합니다. 이는 차례로 물음표에'and'를 더한 정규식을 의미합니다. 're.escape'는 두 개의 백 슬래시를 보여줍니다. 왜냐하면'\?파이썬의 REPL pretty-printing은 파이썬 프로그램에서 사용할 수있는 형태, 즉 '\\? and'로 다시 변환합니다. – ruakh
@wim : 대답을 잘못 고치지 않고 (더 완벽하게) 업데이트했습니다. – ruakh