2016-09-12 1 views
1

제거 나는 내가 uuid4 생성 된 문자열과 파이썬 uuid4 문자열 패턴의 오른쪽에 오는 텍스트를 제거하기 위해 노력하고 아래의 문자열 예uuid4 문자열 패턴

1# 00000 Gin-a19ea68e-64bf-4471-b4d1-44f6bd9c1708-62fa6ae2-599c-4ff1-8249-bf6411ce3be7-83930e63-2149-40f0-b6ff-0838596a9b89 Kin 

2# 00000 Gin-a19ea68e-64bf-4471-b4d1-44f6bd9c1708 Kin 

있습니다.

출력은 모두 예 내가 여기 What is the correct regex for matching values generated by uuid.uuid4().hex? 확인했다

에서 00000 Gin을해야합니다. 그러나 아직도 도움이되지 않습니다.

답변

1

당신은 사용할 수 있습니다

import re 

strings = ["00000 Gin-a19ea68e-64bf-4471-b4d1-44f6bd9c1708-62fa6ae2-599c-4ff1-8249-bf6411ce3be7-83930e63-2149-40f0-b6ff-0838596a9b89 Kin", 
"00000 Gin-a19ea68e-64bf-4471-b4d1-44f6bd9c1708 Kin"] 

rx = re.compile(r'^[^-]+') 
# match the start and anything not - greedily 

new_strings = [match.group(0) 
       for string in strings 
       for match in [rx.search(string)] 
       if match] 
print(new_strings) 
# ['00000 Gin', '00000 Gin'] 


a demo on ideone.com를 참조하십시오. 당신의 문자열이 원하는 형식 인 경우
실제로 체크는, 당신은 다음 식을 사용할 수 있습니다하려면 : (! 수식을 마음)

^ 
(?P<interesting>.+?)     # before 
(?P<uid>\b\w{8}-(?:\w{4}-){3}\w{12}\b) # uid 
(?P<junk>.+)       # garbage 
$ 

regex101.com에서이 일에 대한 데모를 참조하십시오.

+0

8-4-4-4-12 패턴 검사가 없습니다. 본질적으로 "-"가있는 문자열은 모두 파싱됩니다. (당신의 대답은 이미 올바른 방향으로 나를 고무 시켰습니다.) –

+0

@faiz : 업데이트 된 답변을보십시오. – Jan