2014-12-22 3 views
-4
if 'bl1' in open('/tmp/ch.py').read(): 
     print 'OK' 

특정 문자열 "bl1"을 검색해야합니다. 얻을 수있는 방법은 없나요?파이썬에서 Particula 문자열 검색

^bl1$을 사용해 보았지만 제대로 작동하지 않았습니다.

+0

무엇이'^ bl1 $'입니까? –

+0

시작 (^) 및 끝 ($) ... 정확한 문자열 검색을 수행하고 싶습니다 – Gopi

+0

각 행을 반복 한 다음 각 단어를 반복 해 보았습니까? –

답변

0

단순히 파일의 텍스트에 "bl1"이 표시되는지 확인하기 위해 확인을 실행하는 중이라면 귀하의 진술 문은 정상이라고 생각합니다. 그것은 시험과 if 문이 True 돌아왔다

if 'bl1' in open('/tmp/ch.py').read(): 
    print 'OK' 

>>> if 'bl1' in open('/tmp/ch.py').read(): 
...  print("ok") 
... 
ok 

>>> if 'bl1' in "dfdsaflj hjjfadsfbl1dafdsfd bl1llll bdasbl1aa": 
...  print("ok") 
... 
ok 

당신이 '^ BL1을 $'말에서 읽기 (ch.py ​​안에 'BL1'를 포함하는 단어를 가지고 주어진), 난 당신이 적용하고자하는 가정 불행히도 정규 표현식의 규칙을 명시 적으로 따르지 않았습니다.

3 개의 연속 문자 'bl1'을 포함하는 단어를 추출하려는 경우 re 모듈에서 내장 함수를 적용 할 수 있습니다.

>>> import re 
>>> match = re.findall('\w+[bl1]\w+', open('/tmp/ch.py').read()) // finds all occurrences 
>>> match 
['asfdbl1', 'bl123'] // return all occurrences of words containing 'bl1' in a list 

당신의 형식으로, 그것은 다음과 같아야합니다

>>> if re.findall('\w+[bl1]\w+', open('/tmp/ch.py').read()): 
...  print('OK') 
... 
OK 
>>> 

를 정규 표현식에서 '^ BL1 $'는 "BL1"로 시작하는 문자열에서 하나의 일치를 볼 수있는 형식입니다 전체 문자열이 정확하게 일치를위한 'BL1'이어야 의미 "BL1".. 당신이 정규 표현식에 관심이 있다면

>>> match = re.findall('^bl1$', open('/tmp/ch.py').read()) 
>>> match 
[] 
>>> match = re.findall('^bl1$', 'bl1') // exactly "bl1" 
>>> match 
['bl1'] 
>>> match = re.findall('^bl1$', 'bl12') // not exactly "bl1" 
>>> match 
[] 

, 나는 당신이 문서에 좋아하는 것을 찾을 수 있기를 바랍니다에 종료 파이썬 표준의 라이브러리 - 다시 : https://docs.python.org/3.4/library/re.html