2014-03-30 2 views
4

수천 줄의 텍스트 파일이 있습니다. 여기에 예제가 있습니다(= 문자열)에 대한 정규식

line = .Falies/367. 11DG1550/11DG15537.Axiom=nt60 
line = .Failies/367. 11DG1550/11DG15537.Axiom=nt50 

'nt60', 'nt50'끝에 문자열을 추출하려고했습니다.

lines = line.split('=') 
version = lines[-1] 

문제는 라인 문자의 끝 ('\n')

을 포함 할 것입니다 내가 무엇을하여야한다 아무 생각이 내가 ( '=nt') 에서 시작하는 문자열과 일치하는 정규 표현식 검색을 사용하여 생각

하지만 =, word, number에 일치하는 것을 사용합니다.

아무도 도와 줄 수 있습니까?

답변

1

이 정규식은 =nt에 맞는 그런 다음 number이다

line = .Falies/367. 11DG1550/11DG15537.Axiom=nt60 
line = .Failies/367. 11DG1550/11DG15537.Axiom=nt50 

이 두 경기를 반환합니다

MATCH 1 
1. [49-53] `nt60` 
MATCH 2 
1. [105-109] `nt50` 

설명 :

`=` matches the character `=` literally 
1st Capturing group `(nt\d+)` 
    `nt` matches the characters `nt` literally (case sensitive) 
    `\d` match a digit `[0-9]` 
    `+` Quantifier: Between one and unlimited times, as many times as possible, 
     giving back as needed 

당신이 당신의 정규식이 일치 할 경우

= word number 다음 다만 어떤 단어를 일치 \w+nt를 교체합니다.

희망이 도움이됩니다.

+0

감사합니다. @unixer. 나는 그것이 조금 복잡하다는 것을 발견했다. 그러나 그것은 어떻게해서든지 도움이된다. – user91

+1

문제 없음 @MarJamil, 귀하의 요구에 맞는 것을 선택하십시오. – najjarammar

+2

@MarJamil 감사합니다. @ SO는 [vote] (http://stackoverflow.com/help/privileges/vote-up)입니다. –

2

첫 번째 방법은 절대적으로 좋습니다. 첫 번째 방법을 사용하여 추출한 문자열을 사용하여 strip()을 적용 할 수 있습니다.

strip()은 문자열에서 선행 및 후행 공백 및 줄 바꿈을 모두 제거합니다. 귀하의 경우를 들어

>>> your_str = 'nt60\n' 
>>> your_str.strip() 
'nt60' 

:

=(nt\d+) 

그리고 당신의 예 :

lines = line.rsplit('=',1) 
version = lines[-1].strip() 
+2

변수 이름으로'string' (모듈) 및'str' (유형)을 사용하지 않습니다. –

+0

@Grijesh, 다시 안녕하세요. 고맙습니다. 지금 그것을 바 꾸었습니다. – sshashank124

+0

정말 도움이되는 @ sshashank124 고맙습니다 – user91

관련 문제