2010-04-16 4 views
0

자바에서 스캐너 클래스를 사용하여 텍스트 파일을 탐색하고 각 문장을 추출합니다.자바에서 정규식을 사용하여 문장 일치하기

Pattern.compile("[\\w]*[\\.|?|!][\\s]") 

이 현재 작동하는 것 같다,하지만 문장의 끝에있는 공백을 잎 : 나는 정규식 내 스캐너에 setDelimiter 방법을 사용하고 있습니다. 마지막에 공백을 매치하지만 결과에 공백을 포함하지 않는 쉬운 방법이 있습니까?

나는이 아마 쉬운 질문 실현하지만, 너무 쉽게 가기 전에 :)

+2

String.trim에 "ORLY!?!? LOL"을 분할합니다 :


당신이뿐만 아니라 구두점을 제거하려면

후 바로 경기의 일부로 포함 ? – Pindatjuh

답변

5

이 시도 :

"(?<=[.!?])\\s+" 

[.!?] 앞에 \\s+에 맞게 lookarounds를 사용합니다.) (

"[.!?]+\\s+" 

"ORLY""LOL"

+0

이것은 단어와 만 일치하지만 문장의 끝에서 멈추지 않습니다. 시도해 줘서 고마워! – Gary

+0

@Gary : 죄송합니다. 이제 수정되었습니다. 다시 시도하십시오. – polygenelubricants

+0

모든 것을 끝내고 마침표는 제거합니다! regex를 사용하여 마침표를 제거하는 쉬운 방법이 있습니까? 아니면 나중에 문자열을 변경해야합니까? 편집 : 쉼표를 무시하고 싶다는 말을 잊어 버렸습니다. 정규식이나 수동으로이 작업을 수행해야합니까? – Gary

0

은 무엇 당신이 찾고있는 것은 긍정적 예측이다 나는 정규식을 사용한 적이 없으니까. 이것은을 수행해야합니다

Pattern.compile("\\w*[.?!](?=\\s)") 
+0

도움을 주셔서 감사합니다. 그러나 작동하지 않는 것 같습니다. 원본 문장은 두 문장으로 끝납니다 (). "빠른 갈색 여우가 게으른 점프를합니다." "여기 있습니다. 테스트에서 갈 다른 문장 " 너의 것은 다음과 같은 것을 만들어내는 것 같았다. "게으른 여우가 뛰어 오른다. " "시험에 갈 다른 문장이있다. " – Gary

+0

그냥 마지막 단어가 깨달았다. 또한 실종, 어떤 생각? – Gary

+2

@WoLpH : Character 클래스 내부의 표현에 대해 다른 의미가 있다는 점을 감안할 때 Pattern.compile ("\\ w * [.?!] (? = \\ s)")이 아니겠습니까? – ig0774

관련 문제