java中正则表达式问题

如题: 如何得到一个字符串中匹配正则的子字符串?
例如:String str="abk abggs wws aos poe wihj allls ayutres ";
java代码。。。。。
得到(条件-----------以a开头以s结尾)
"abk", "abggs","aos","allls","ayutres"

求所需的正则表达式

 这不是和上回那个很相似吗,"abk"这个应该不是吧
 public static void test3(){
        String str="abk abggs wws aos poe wihj allls ayutres ";
        String startChar = "a";
        String endChar = "s";
        Pattern p = Pattern.compile("(?i)(?<=)a((?!\\s).)*s(?=)");//正则表达式
        Matcher m = p.matcher(str) ;//
        while (m.find()) {
            System.out.println(m.group(0));//
        }
    }
 '^a[a-zA-Z]+s$\b'

a((?!\s).)*,

public static void main(String[] args) {
        String str = "abk abggs wws aos poe wihj alllsayutres ";
        Pattern p = Pattern.compile("a.*?s");// a开头s结尾,中间是任意多个字符
        Matcher m = p.matcher(str);
        while (m.find()) {
            System.out.println(m.group(0));
        }
    }

输出结果:

abk abggs
aos
allls
ayutres

这个第一个匹配项中因为有两个a一个s,因此是找到的最全的匹配项,不能输出abggs。