2014-09-11 3 views
0

그래서 저는 파이썬을 위해 정규 표현식에 들어가기 시작했습니다. 그리고 나는 이것을 작동시키는 것처럼 보이지 않습니다. 정규 표현식 Python, 문자열의 시작과 끝을 표시 하시겠습니까?

는 그래서 그것은 시스코 라우터에서 일부 출력의 문자열

"2800 Software (C2800NM-ADVIPSERVICESK9-M), Version 12.4(24)T8, RELEASE SOFTWARE (fc1)" 

을하고 난 버전 번호를 당길 필요가있다. 버전 번호는 "버전"다음의 문자열이며 ","로 끝납니다. 이전에 "Version"이 발생하고 ","직후에 버전 번호를 가져올 정규식을 작성할 수 있습니까? 나는 단지 "12.4 (24) T8"이 필요하고 다른 라우터는 완전히 다른 숫자를 가지고있다.

답변

0
Version\s*(\S+?), 

시도해보십시오. 결과를 얻으려면 match.group (1)을 사용하십시오.

또는 이것을 사용할 수 있습니다.

print re.findall(r"Version\s*(\S+?),",x) 

또는 이것을 사용할 수 있습니다.

print re.search(r"Version\s*(\S+?),",x).group(1) 

데모를 참조하십시오. 이 하나의 문자열에서 버전을 추출하려는 경우

http://regex101.com/r/bA0jG5/10

2

, 당신은이 작업을 수행 할 re.search()를 사용할 수 있습니다.

>>> import re 
>>> s = '2800 Software (C2800NM-ADVIPSERVICESK9-M), Version 12.4(24)T8, RELEASE SOFTWARE (fc1)' 
>>> re.search(r'\bVersion\s*([^,]+)', s).group(1) 
'12.4(24)T8' 

당신은, 당신은에서 추출해야 여러 문자열을 사용하는 경우 re.findall()

>>> re.findall(r'\bVersion\s*([^,]+)', s) 
['12.4(24)T8'] 

설명 :

\b   # the boundary between a word character (\w) and not a word character 
Version # 'Version' 
\s*  # whitespace (\n, \r, \t, \f, and " ") (0 or more times) 
(   # group and capture to \1: 
    [^,]+ # any character except: ',' (1 or more times) 
)   # end of \1 
관련 문제