我需要从文本文件中提取带撇号的单词。我有一个程序,提取其长度是一定数量的单词(在下面的程序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);
答案 0 :(得分:4)
但你知道这个词:
Pattern p = Pattern.compile("\\w*'\\w*");
答案 1 :(得分:1)
这种模式:
"[a-zA-Z']*'[a-zA-Z']*"
匹配包含至少一个撇号的任何字母/撇号序列。
因此它甚至可以匹配:
答案 2 :(得分:1)
试试这个:
Pattern p = Pattern.compile("[a-zA-Z]{2,}'[a-zA-Z]*");
使用此正则表达式,您可以匹配带有两个或更多字母的单词,以及撇号后的撇号和可选字母。您可以更改[a-zA-Z]{2,}
中的最小/最大字母,在星号的最后一部分中,您可以使用{min,max}
来精确指定