2009-09-26 39 views
0

示例輸入: 是否xxx xxx(可能是任意數量的單詞)是生還是死?正則表達式,以匹配具有固定前綴和後綴的可變數量的作品

例如:

Did Michael  Jackson live or  die  ? 

我想捕捉:邁克爾·傑克遜,生活,死亡。句子之間可以有任意數量的空格。

我該怎麼做?

+0

嗯...雖然你可以做這樣的事情,但我希望你認識到使用正則表達式從自然語言中提取信息會給你一個有限的,脆弱的解決方案。如果你想要一個強大的解決方案,你需要研究自然語言分析技術。 – 2009-09-26 05:35:39

回答

1

像這樣的工作。你需要把第一組邁克爾傑克遜帶到空間角色。

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 2009-09-26 03:41:21

+0

在這個例子中,文本「邁克爾傑克遜」將被拆分一個空格字符。最終的結果將是一個字符串數組,其元素是「邁克爾」和「傑克遜」 – 2009-09-26 03:43:02

+0

是的,但如果我認爲任何單詞之間有多個空格,那麼匹配器將失敗,或者它會捕獲「邁克爾傑克遜直播」而不是「邁克爾傑克遜「 – Saobi 2009-09-26 03:48:23

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

還是我錯過了什麼?

編輯:改變單一的反斜槓反斜槓加倍

+0

沒有。不起作用。 – Saobi 2009-09-26 03:38:31

相關問題