2016-06-28 2 views
1

친구의 문자열,그렙 파이썬

내가 문자열에서 단어를 grep을해야하는 상황이

[MBeanServerInvocationHandler]com.bea:Name=itms2md01,Location=hello,Type=ServerRuntime 

내가 grep을 원하는 것은에서 변수 Name에 할당 된 단어입니다 위의 문자열은 itms2md01입니다.

import re 
import sys 

file = open(sys.argv[2], "r") 

for line in file: 
     if re.search(sys.argv[1], line): 
       print line, 
+1

전달한 CLI는 무엇입니까? – Deca

+2

'm = re.search ('(? <= Name =) \ w + (? =,)', my_string); m.group (0)', 매뉴얼에서 거의 직접 복사 했습니까? –

+0

디크, 필자의 경우 grep에 문자열을 할당 했으므로 Name =에 할당 된 문자열이 없으므로 검색해야합니다. – Rczone

답변

0

디크이 옳다 : 내 경우

내가 그렇게

이 시도 내가 검색해야 어떤 특정 문자열이없는 지금있는 Name=에 할당 된 문자열 grep을해야합니다. 코멘트를하기에 충분한 평판을 얻지 못했기 때문에 아래에 묘사하고 있습니다. 나는 파일 수준으로 가지 않을 것이다. 그냥 인스턴스로 참조 : -

import re 

str1 = "[MBeanServerInvocationHandler]com.bea:Name=itms2md01,Location=hello,Type=ServerRuntime" 

pat = '(?<=Name=)\w+(?=,)' 

print re.search(pat, str1).group() 

은 따라서이 패턴 나는 종종 하나 이상의 것을 찾고 있어요 때문에 나는라는 그룹을 사용하려면

+0

댓글을 달 수 없기 때문에 답변을 추가하고 있습니다. 하지만 당신은 대답하고 있어요 ... 내가 이미 코멘트에 쓴 것. 그래서 당신이 논평 할 수 있다면 내 것과 같은 말을하는 덧글을 추가 했습니까? : D –

0

와 파일 내용으로 논리를 적용 할 수 있습니다. 그러나 검색의 한 항목에 대해서도 여전히 잘 작동하며 검색 대상을 매우 쉽게 기억할 수 있습니다.

나는이 질문을 완전히 이해하고 있는지 확신 할 수 없지만 사용자가 값을 검색하기위한 키와 검색 할 파일을 전달할 수 있다고 말하면 다음과 같이 할 수 있습니다.

그래서,이 경우에, 나는 할 수 있습니다 내가 그 목적이다 가정입니다

import re 
import sys 

file = open(sys.argv[2], "r") 

for line in file: 
    match = re.search(r"%s=(?P<item>[^,]+)" % sys.argv[1], line) 
    if match is not None: 
     print match.group('item') 

, 당신은 sys.argv에 포함대로 [1] 검색으로, 당신은 왜 언급하지 않았지만을 귀하의 질문에 그렇게했다.