仅从文本文件中提取带撇号的单词

时间:2014-10-19 18:35:29

标签: java regex

我需要从文本文件中提取带撇号的单词。我有一个程序,提取其长度是一定数量的单词(在下面的程序3中)并有撇号。但是,我需要只考虑那些只考虑撇号的词而不考虑任何其他条件。

   public static void main(String[] args) throws IOException {
    ArrayList<String> words = new ArrayList<String>();

    String s  = "I want to have a lot of money's when I am older.";
    Pattern p = Pattern.compile("[a-zA-Z']{3,}");
    Matcher m = p.matcher(s);
    while (m.find()) {
      words.add(m.group());
    }
    System.out.println(words);

3 个答案:

答案 0 :(得分:4)

但你知道这个词:

  1. 包含撇号之前的字符
  2. 撇号
  3. 更多char(s)
  4. Pattern p = Pattern.compile("\\w*'\\w*");

答案 1 :(得分:1)

这种模式:

"[a-zA-Z']*'[a-zA-Z']*"

匹配包含至少一个撇号的任何字母/撇号序列。

因此它甚至可以匹配:

  • O&#39; Neill&#34;上校O&#39; Neill's步枪。&#34;
  • &#39; N&#39;在&#34; Fish&#39; n&#39;芯片&#34;

答案 2 :(得分:1)

试试这个:

Pattern p = Pattern.compile("[a-zA-Z]{2,}'[a-zA-Z]*");

使用此正则表达式,您可以匹配带有两个或更多字母的单词,以及撇号后的撇号和可选字母。您可以更改[a-zA-Z]{2,}中的最小/最大字母,在星号的最后一部分中,您可以使用{min,max}来精确指定