2013-01-06 3 views
0

저는 파이썬에서 아주 새로운데 정규식을 실제로 알지 못합니다.정규 표현식을 사용하여 문자열 부분 찾기

a = "Tom Hanks XYZ doesn't really matter" 
b = "Julia Roberts XYZ don't worry be happy" 
c = "Morgan Freeman XYZ all the best" 

각 문자열의 중간에는 단어 XYZ 및 일부 텍스트가 있습니다. XYZ에서 문자열 끝까지이 부분을 더 정확하게 찾아서 일치시키는 정규식이 필요합니다.

+1

발견되지 않는 경우

2.

a[a.index(" XYZ") + 1:] 

이 예외 ValueError: substring not found을 올릴 것인가? 'a [a.find ("XYZ") :]'와 같은 일도하지 않겠습니까? – DSM

+0

오! 당신 말이 맞아 :) 정규식없이 할 수 있다는 것을 몰랐다! – user1952026

답변

1

는 이것이하는 일은이 문자 "XYZ"를보고하고 0 번 이상 이외에는 아무 것도 일치 할 때 캡처 시작되는 다음의 식을

(XYZ.*) 

를 사용합니다. 당신은 문자열의 일부를 표시 할 경우

1
m = re.search("(XYZ.*)", a) 

: 정규식을 통해 할 수있는 특정 요구 사항이 Unles

print m.groups()[0] 
+0

@DSM : 감사합니다, 감사합니다! 결정된 –

2

, 비 정규식 솔루션은 여기에 잘 작동합니다. 당신이

''.join(a.partition(" XYZ")[1:])[1:] 

주의 사항 공백 앞에

a = "Tom Hanks XYZ doesn't really matter" 

파티션 분리와 문자열을 감안할 때이 문제를

1. , 접근 할 수있는 두 가지 방법이 있습니다 분리하는 경우 문자열이 존재하지 않으면 빈 문자열을 반환합니다. 문자열이 당신이 정규식을 사용 할 몇 가지 이유가

관련 문제