2013-06-20 2 views
1

그래서이 시퀀스가 ​​있고 정규식의 검색 함수를 사용하여 쿼리 및 지역 후 발생하기 전에 영역을 찾으려고 노력하고있어.Regex 검색 앞뒤 쿼리를 찾으십시오

이이 내가 내가 전에 하나 그것을 시도

before = 'abcdefghi' 
after = 'qrstuvwxyz' 

와 끝까지하려는 그것은 작동하지 않는 것입니다 내가

sequence = 'abcdefghijklmnopqrstuvwxyz' 
query = 'jklmnop' 

을 것입니다. 나는이 캐릭터 라인 내에서 query 작성 3 개 그룹

sequence = 'abcdefghijklmnopqrstuvwxyz' 
query = 'jklmnop' 
print re.search('\w+(query)\w+',sequence).group(0) 
    Traceback (most recent call last): 
     File "<stdin>", line 1, in <module> 
    AttributeError: 'NoneType' object has no attribute 'group' 

답변

1

으로 분할 것이라고 생각 해당 문자열 내부 query 아닌 값을 저장, 그것은 단순히 거기에 문자열 '쿼리'와 새로운 문자열을 생성한다.

>>> print '\w+(query)\w+' 
\w+(query)\w+ 

당신은 문자열 서식을 사용해야은 {}에

>>> strs = 'abcdefghijklmnopqrstuvwxyz' 
>>> import re 
>>> before, after = re.split('jklmnop',strs) 
>>> before 
'abcdefghi' 
>>> after 
'qrstuvwxyz' 
+0

덕분에 좋은 설명을 먹으 렴하지만 형식은 무엇을합니까 :

>>> sequence = 'abcdefghijklmnopqrstuvwxyz' >>> query = 'jklmnop' >>> '(\w+)({})(\w+)'.format(query) '(\\w+)(jklmnop)(\\w+)' >>> re.search('(\w+)({})(\w+)'.format(query),sequence).group(1) 'abcdefghi' >>> re.search('(\w+)({})(\w+)'.format(query),sequence).group(3) 'qrstuvwxyz' 

그것은 이러한 목적으로 re.split을 사용하는 것이 좋습니다? –

+1

@ draconisthe0ry'{}'는 'format()'에 전달 된 매개 변수 값이 문자열에 저장 (대체) 될 위치를 지정하는 자리 표시 자입니다. 몇 가지 예를 살펴보십시오. http://docs.python.org/2/library/string.html#format-examples –