파일 목록이 있는데 'test_'로 시작하고 '.py'로 끝나는 파일 만 유지하려고합니다. 정규식에서 'test_'및 '.py'내부 텍스트 만 반환하기를 원합니다. 나는 .pyc 파일을 포함하고 싶지 않다.Python - 주어진 텍스트로 시작하고 끝나는 문자열에 대한 정규식 검색
>>>filename = 'test_foo.py'
>>>re.search(r'(?<=test_).+(?=\.py)', filename).group()
foo.py
을하지만 여전히 확장을 반환하고 (I 원하지 않는) 확장 '된 .pyc'수 :
나는 노력했다. 나는 전체 문자열을 소비하는 '+'라고 확신합니다.
이 대체로 작동하지만 정규식 솔루션을 선호하는 것 :
>>>filename = 'test_foo.py'
>>>result = filename.startswith('test_') and filename.endswith('.py')
>>>result = result.replace('test_', '').replace('.py', '')
>>>print result
foo
이 왜 정규식 솔루션을 선호? 나는 당신의 후퇴가 실제로 더 나은 접근법이라고 생각합니다. – arshajii
http://regex101.com/r/qU7iS2에서 테스트해볼 수 있습니다. 그것은 잘 작동하는 것 같다, 어쩌면 그것을 잘못 받고'그룹()'방법? – brianmearns
@ Keyser : 정중히 동의 : http://regex101.com/r/lR3lK7 – brianmearns