2015-03-03 56 views
-1

我有话的两份名单,使用正则表达式匹配模式的Java

答:坑锅大水slaptwo喘息,

B:PT锅泥炭部分

我要创建一个正则表达式模式的对A列中的所有内容都返回true,对B列中的所有内容都返回false。我认为我基本上对于正则表达式有一些误解,因为我所提出的一切最终会导致一个额外的错误,我不想要它。主要是我看不出如何禁止彼此相邻的两个元音。

这是我有:

public static void main(String[] args){ 
    String[] check = {"pit","spot","spate","slaptwo","respite","pt","Pot","peat","part"}; 
    Pattern p = Pattern.compile("([psr][^t(ea)][^r])\\w*"); 

    ArrayList<Matcher> M = new ArrayList<Matcher>(); 
    for (int i = 0; i < check.length; i++) { 
     M.add(p.matcher(check[i])); 
    } 

    for (int j = 0; j < M.size(); j++){ 
     System.out.println("Return Value:" +check[j] + "\t"+ M.get(j).matches()); 
    } 
} 

我现在明白了,(EA)不被理解为一个事情,所以它引起的喘息是假的时,我不希望它,一切返回做正确的价值。正如我之前所说的,我需要知道如何禁止两个元音彼此相邻。或者如果我在这里错过了一些基本的东西?

+1

什么是你期望的输出? – 2015-03-03 02:02:20

回答

1

您不能在字符类中使用分组结构。

要拒绝“ea”,您可以在此处使用负向预览。

[psr](?!ea)[^t][^r]\\w* 

Live Demo