트윗 본문 내의 모든 트위터 핸들을 캡처하기 위해 정규 표현식을 사용하려고합니다. 문제는 내가 얻으려고 노력 파이썬에서 정규식이 트위터 핸들과 일치하도록
- 는 특정 문자열을 알 수없는 길이의
- 있습니다 비 포함
- 는
- 공백 중 하나
- 문장 다음에 될 수 있음을 처리하고있어 것입니다
- 또는 문자열의 끝.
예를 들어, 이러한 문자열의 각각에 대해, 필자는 내가 돌아 싶은 것을 이탤릭체에 을 표시했다.
"@handle 무엇이 문제입니까?" [RETURN '@handle']
"무엇이 @handle입니까?" [RETURN '@handle']
"@ 123handle 문제는 @ handle123입니까?" [RETURN '@ 123handle', '@의 handle123'] 이것은 내가 지금까지 무엇을 가지고
:
>>> import re
>>> re.findall(r'(@.*handle.*?)\W','hi @123handle, hello @handle123')
['@123handle']
# This misses the handles that are followed by end-of-string
내가 수정 시도가 허용하는 or
문자를 포함하는 끝을 문자열 캐릭터. 대신 전체 문자열을 반환합니다.
>>> re.findall(r'(@.*handle.*?)(?=\W|$)','hi @123handle, hello @handle123')
['@123handle, hello @handle123']
# This looks like it is too greedy and ends up returning too much
두 조건을 모두 만족시키는 표현식을 작성하려면 어떻게해야합니까?
나는 coupleother 장소를 보았지만 여전히 문제가 있습니다.
'@ '와'handle' 사이에'. *'를 추가하면 안됩니다. '\ w *'를 사용하십시오. 'r '@ w * handle \ w *'와 비슷하다. –