2014-04-13 6 views
0

나는 (%는 PDF-1.1)파이썬에서 정확한 단어를 검색하는 방법은 무엇입니까?

import re 
x = "%PDF-1.1 pdf file contains four parts one of them the header part which looks like " 
s = re.compile("%PDF-\d\.\d[\b\s]") 
match = re.search("%PDF-\d\.\d[\b\s]",x) 
if match: 
    print match.group() 
else: 
    print "its not found" 

하지만이 경우 문제는이 "의의 %는 PDF-1.1"는 결과 %의 PDF-1.1를 반환하는 텍스트에 정확한 단어를 검색하려면이 코드를 작성 그러나 그것은 틀렸어 x = "pdf 파일에는 % PDF-1.1과 비슷한 헤더 부분이 4 개 포함되어 있는데 아무 것도주지 않는다.

어떻게하면 정확한 단어를 검색 할 수 있습니까?

+0

're.compile (" "% pdf - \ d \. \ d [\ b \ s]")' – hjpotter92

+0

문자열에서, 당신은 \ 기호를 scape해야합니다 :'s = re.compile ("% PDF - \\ d \\. \\ d [\\ b \\ s] ")'를 사용하고 대신에's.search (x)'를 사용하십시오. –

+0

아니요 작동하지 않았 음 – user3461464

답변

1

현재 "% PDF-X-X"(여기서 X는 숫자)라는 단어를 검색하고 그 앞에 오는 것을 신경 쓰지 않고 더 많은 것을 검색합니다. 당신은 단지 시작에 문자열의 끝을이 단어를 검색 할 또는 단어 인 경우 (내가 그 전후 공백으로 가정) 경우이 작업을 시도 할 수 있습니다 :

import re 
x = "%PDF-1.1 pdf file contains four parts one of them the header part which looks like " 
y = "pdf file contains four parts one of them the header part which looks like %PDF-1.1" 
s = re.compile("(^|\s)(?P<myword>%PDF-\d\.\d)($|\s)") 
match = s.search(x) 
if match: 
    print match.group("myword") 
else: 
    print "its not found" 

match = s.search(y) 
if match: 
    print match.group("myword") 
else: 
    print "its not found" 

# %PDF-1.1 
# %PDF-1.1 

는 것을 원하는 경우 단어 뒤에 기호가 오는 경우 문자 또는 숫자가 아닌 다른 문자가 올 수 있도록 다음과 같이 할 수 있습니다.

s = re.compile("(^|\s)(?P<myword>%PDF-\d\.\d)($|\s|[^a-zA-Z0-9])") 
+0

예 고마워요 – user3461464

+0

그게 당신의 질문을 해결한다면, 대답은 대답을 그대로 받아 들일 수 있습니다. –

+0

어떻게 할 수있어 내가 여기 새로 온다 – user3461464

관련 문제