2017-12-29 20 views
4

주식 시세표를 텍스트 문자열로 일치시키는 데 문제가 있습니다. 공백, 대문자 3 자 및 마지막으로 공백, 마침표 또는 물음표와 일치하는 정규 표현식을 원합니다.정규식 매칭 주식 시세 표시기

다음은 내가 만든 샘플 패턴입니다.

> `example = 'These are the tickers that I am trying to find: FAB. APL APL? GJA ADJ AKE EBY ZKE SPR TYL' 

re.findall('[ ][A-Z]{3}[ .!?]',example)` 

정규식은 상당 부분 일치하지 않습니다.

+1

이 좀 더 구체적으로 할 수 있습니까? 무엇이 그리울까요? – glibdud

답변

-1

난 당신이 통지하는 경우, 항목이 누락되어있는 패턴이있다 (당신은 포함된다 "!"귀하의 질문에 있지만 정규식에)

6

\s[A-Z]{3}[\s\.\?] 사용할 수 있습니다. 비 단서 기호의 긴 부분에서 가장 분명합니다. 다른 모든 항목이 누락됩니다.

re.findall()이 중복되지 않으며이 일치하고 각 패턴이 매치 전후의 공간과 일치하기 때문입니다. 즉, 한 항목이 일치하면 다음 항목의 초기 공간이 이미 사용 중이며 다시 사용할 수 없습니다.

사용 단어 경계 (\b) 대신 후행 공백을/최고의 일치하고 문자 클래스는 선택합니다

>>> re.findall(r'\b[A-Z]{3}\b[.!?]?',example) 
['FAB.', 'APL', 'APL?', 'GJA', 'ADJ', 'AKE', 'EBY', 'ZKE', 'SPR', 'TYL'] 
+1

이것은 OP의 기술에 실제로 잘못된 점을 설명하는 유일한 대답입니다. –