2016-12-09 1 views
2

나는 테러리스트 공격에 관한 여러 기사를 긁어 냈다. 이 기사에서 특정 단락을 추출하고 싶습니다. 기사에서 단락 추출하기 | 정규 표현

은 기사의 샘플을 긁어 :

내가 추가 분석을 위해 추출 할 무엇
By DAVID D. KIRKPATRICK MARCH 18, 2015 
Scenes from Tunisian state television showed confusion outside an art museum and Parliament on Wednesday after gunmen attacked. 
CAIRO — Gunmen in military uniforms killed 19 people on Wednesday in a 
midday attack on a museum in downtown Tunis, dealing a new blow to the tourist industry 
that is vital to Tunisia as it struggles to consolidate the only transition to democracy 
after the Arab Spring revolts. 
Tunisian officials had initially said that the attackers took 10 
hostages and killed nine people, including seven foreign visitors and two Tunisians. 

가,에서,이 예에서, 이동 텍스트입니다 : "카이로 -"처음 fullstop에. 내가 생각 해낸

This is the regular expression

:이 정규 표현식으로

([A-Z]+(?:\W+\w+)?)\s*—[\s\S]+\.\s 

나는 단락의 시작 지점을 추출하지만, 나는 그것의 나머지 부분을 추출하지 않습니다.

+0

정규 표현식이 원하는 것보다 더 많거나 적게 추출 되었습니까? (나의 의심은 당신이 게으른 [수량 화기] (http://www.regular-expressions.info/repeat.html)를 사용하지 않았기 때문에 너무 많이 추출한다는 것입니다. –

+0

네 말이 맞아. 나는 대문자로 된 단어와 사인 뒤에 시작하는 첫 단락만을 extrac하려고 노력하고있다. 전체 데이터 세트에 적용 할 때 너무 많이 추출합니다. –

+0

혼란 스럽습니다 - "첫 번째 전체 중지"로 지정하십시오. 그리고 그것이 당신이 얻는 것입니다. 네가 원하는게 뭐지? – ClasG

답변

2

사용하십시오 + (또는 *) 후

(([A-Z]+(?:\W+\w+)?)\s*—[\s\S]+?\.\s) 

? 비 욕심은 비 욕심이 있습니다. 그것이 가능한 한 많이 일치하는 정상적인 행동 대신 가능한 한 적게 만 일치한다는 것을 의미합니다.

0

EDIT1 다음과 같이

는 정규식을 시도 :

([A-Z]+\w+\s*—\s*.*?\.) 

당신이 원하는 텍스트와 일치하지만 그것은, 그룹화에 관한 것입니다.

(([A-Z]+(?:\W+\w+)?)\s*—[\s\S]+\.\s) 

그룹 (1)가 필요한 문자열/텍스트를 포함

는 다음과 같은 정규 표현식 (parenthisis와 정규식 서라운드)를보십시오.

이미지 참조 : enter image description here

+0

전체 데이터 집합에 정규식을 적용하면 문제가 발생합니다. 많은 정보. 또한 분리 된 기사의 텍스트를 분할하려고했지만 작동하지 않습니다. –

+0

여러 번/그룹과 일치한다는 의미입니까? 카이로를 하드 코딩 할 수 있습니까? 실제 문제와 함께 코드를 업데이트 할 수 있습니까? –

+1

비 탐욕스러운 버전 만 사용하십시오! '(([A-Z] + (? : \ W + \ w +)?) \ s * - [\ s \ S] +? \. \ s)'. '+' – Fallenhero