2011-11-22 89 views
3

我有一個大的文本文件。我試圖找到所有的短語(任何2個字的序列)。下面的正則表達式能夠做到這一點嗎?Java的正則表達式來查找2個單詞的短語

Pattern p = Pattern.compile("\w+\s{1}\w+"); 

我試過了,但它不工作。

+4

你嘗試了嗎? http://gskinner.com/RegExr/ – Bryan

+0

我沒有得到你。你可以舉一些你想要的例子嗎? – gprathour

+2

你應該詳細說明你的意思是「不工作」。根據您給出的內容,我認爲您的問題可能是您沒有逃避正則表達式中的斜槓。 – Bryan

回答

4

以下應該工作。你需要逃避你的斜線。

Pattern p = Pattern.compile("\\w+\\s{1}\\w+"); 

檢查「轉義序列」部分here

0

您的RegEx應該可以工作。以下是一個Java的實現:

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class Main { 
    public static void main(String[] args) { 
     String html = "ed ut perspiciatis, unde omnis iste natus error! sit 'voluptatem' " + 
       "accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo " + 
       "inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. " + 
       "Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, " + 
       "sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt." + 
       " Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, " + 
       "adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et " + 
       "dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis " + 
       "nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid " + 
       "ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea " + 
       "voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem " + 
       "eum fugiat quo voluptas nulla pariatur?"; 
     Pattern p = Pattern.compile("\\w+\\s\\w+"); 
     Matcher m = p.matcher(html); 
     while (m.find()) { 
      System.out.println(m.group()); 
     } 
    } 
} 

給出了這樣的(剪斷)輸出:

ed ut 
unde omnis 
iste natus 
accusantium doloremque 
totam rem 
eaque ipsa 
quae ab 
illo inventore 
veritatis et 
quasi architecto 
beatae vitae 
dicta sunt 
Nemo enim 
ipsam voluptatem 
quia voluptas 
sit aspernatur 
aut odit 
aut fugit 
...