2009-09-26 3 views
0

샘플 입력 : xxxxxxxxx (살고있는 단어의 수가 될 수 있음)가 라이브 또는 죽었습니까? 예를 들어고정 된 접두어와 접미사로 가변 수의 작업을 일치시키는 정규식

: I 캡처 할

Did Michael  Jackson live or  die  ? 

: 마이클 잭슨, 살고 죽는다. 문장은 여러 단어 사이에 공백을 포함 할 수 있습니다.

어떻게해야합니까?

+0

음 ... 당신이 이런 종류의 일을 할 수있는 동안, 정규 표현식을 사용하여 자연어에서 정보를 추출하면 제한적이고 깨지기 쉬운 해결책을 얻게된다는 것을 알기를 바랍니다. 강력한 솔루션을 원한다면 자연어 분석 기술을 조사해야합니다. –

답변

1

뭔가 일하는 것이 백 슬래시를 두 배로 단일 백 슬래시를 변경했습니다. 첫 번째 그룹 인 마이클 잭슨 (Michael Jackson)을 데리고 공간 문자로 분리해야합니다.

Pattern regex = Pattern.compile("^Did (.+)\s+(\w+)\s+or\s+(\w+)$", 
            Pattern.CASE_INSENSITIVE | 
            Pattern.UNICODE_CASE); 
Matcher regexMatcher = regex.matcher(subjectString); 
if (regexMatcher.find()) 
{ 
    String []person = regexMatcher.group(0).split(" "); 
    String action1 = regexMatcher.group(1); 
    String action2 = regexMatcher.group(2); 
} 
+0

split ("")은 무엇을합니까? – Saobi

+0

이 예에서 텍스트 "Michael Jackson"은 하나의 공백 문자로 분리됩니다. 최종 결과는 요소가 "Michael"및 "Jackson"인 문자열 배열입니다. –

+0

예. 생각하는 단어 사이에 공백이 여러 개 있으면 일치자가 실패하거나 "Michael"대신 "Michael Jackson live"를 캡처합니다 Jackson " – Saobi

1
Did\\s+(.+)\\s+(\\S+)\\s+or\\s+(\\S+)\\s*\\? 

또는 뭔가 빠졌습니까?

편집 :이 같은

+0

Nope. 작동하지 않습니다. – Saobi

관련 문제