2015-01-10 1 views
0

일련의 연결된 문장으로 구성된 긴 텍스트 문자열이 있습니다. 필자는 기간 일치와 긍정적 인 선견자를 결합하여 개별 문장 전체를 캡처하는 정규 표현식을 작성했습니다. 내가 곤경에 처하게되는 곳은 내 텍스트에 일반 약어가 포함되어있는 경우입니다. Mrs. Mrs. 내 정규 표현은 이러한 약어를 완전한 문장처럼 처리하여 나쁜 결과를 산출합니다.정규 표현식을 사용하여 약어가 아니라 완전한 문장을 캡처하려면 어떻게해야합니까?

누구나이 상황에 대한 아이디어가 있습니까?

내가 사용 정규식은 이것이다 :

/(\S.+?[.?!])(?=\s+|$)/gm 

내 샘플 텍스트는 이것이다 :

가 이상적으로
Bill attended the meeting and provide some valuable input. John was at the meeting but said nothing. Mr. Smith could not attend. A. B. Butler presented the financial results and took questions. 

내가 네 캡처 얻을 것이다 -하지만 각 문장에 대한 하나를 ' 미스터와 AB가 문장으로 취급 받고 있기 때문에 여섯 명이 나왔습니다.

당신은 여기 내 정규 표현식의 결과를 볼 수 있습니다 : 나는 자바 스크립트를 사용하고

regex101 - Sample Regular Expression

.

+0

당신이 문장의 끝 기간 (사용되지 않음) 후 2 개 공간 인에 의존 할 수 있다면, 당신이 검색 할 수 있습니다 : (.? \ S + [. \의?!]) (? = \ s \ s | $)/gm -하지만 현실 세계에서 신뢰할 수있는 가정처럼 보이지는 않습니다. – JRQ

+0

@jrq 유감스럽게도 데이터는 제복이 아닙니다. 대부분의 경우에 문장 사이에는 단 하나의 공백 만 있습니다. – user365853

+0

이것을 시도하십시오 https://regex101.com/r/wE8kU4/2 –

답변

2

아래의 정규 표현식은 귀하의 경우에 적용됩니다.

(\S.*? [a-z]+[.?!])(?=\s+|$) 

DEMO

+0

문장의 제목이 대문자로 끝나면 어떻게됩니까? (예 : "그는 John에게 책을 줬습니다")? –

관련 문제