2011-11-22 87 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 
...