2012-08-01 2 views
0

원문을 문장으로 분리하려고합니다. 따라서 나는 preg_split() 함수를 사용하고 ?, .;의 발생을 기반으로 문장을 원시 텍스트로 분할합니다. 그러나 예를 들어 "Dr.", "Mr."등 .과 같은 특수한 경우로 인해 문제가 발생했습니다.php에서 pattern_match의 일부 패턴 제외

어떻게 분할에서 제외 할 수 있습니까?

preg_split('/(\.)|(\?)|(\;)!(Mr\.)/', $content); 

답변

2

당신은 점은 "씨"가 선행 및 회사되지 않고 있는지 확인하기 위해 정규식에 negative lookbehind을 추가 할 수 있습니다

preg_split('/((?<!(Mr|Dr))\.|\?|;) /', $content); 

나는 또한 정규식을 조금 단순화. 또한 현재 표현식의 끝에있는 단일 공백으로 \s|$ (공백 또는 입력 끝)을 대체하는 것을 고려해야합니다.

See it in action.

+0

감사합니다. @Jon ..... 하지만 특수 패턴 (Dr., Mr., Mrs. 등)과 같은 패턴을 예측할 수 있습니까? –

관련 문제