正则表达式程序

时间:2011-01-17 14:48:36

标签: java regex string

您好我有以下文字:

SMWABCCA
ABCCAEZZRHM
NABCCAYJG 
XABCCA
ABCCADK
ABCCASKIYRH 
ABCCAKY 
PQABCCAK    
ABCCAKQ 

此方法由用户输出正则表达式,并且应该打印出它适用的字符串,但似乎打印出完全不同的字符串:

private void matchIt(String regex) {
        Pattern p = Pattern.compile(regex);
        Matcher m = null;        
        boolean found = false;
        for(int i = 0; i < data.length; i++){
            m = p.matcher(data[i]);
            if(m.find()){
                out.println(data[i]);
                found = true;
            }
        }

        if(!found){
            out.println("Pattern Not Found");
        }
    }

输入“[C],

时 编辑:对不起,我打印出错误的输出。这是实际输出:

SMWABCCA
ABCCAEZZRHM
NABCCAYJG
XABCCA
ABCCADK
ABCCASKIYRH
ABCCAKY
PQABCCAK
ABCCAKQ
SMWABCCA
ABCCAEZZRHM
NABCCAYJG
XABCCA
ABCCADK
ABCCASKIYRH
ABCCAKY
PQABCCAK
ABCCAKP

任何想法为什么?我想我正在使用m.find()......

编辑:正则表达式用于查找以P:

结尾的所有字符串

我试过了:

[* P] [\ W]

我解释为 - 所有任何事情,直到P后跟非单词字符..但它不起作用。

2 个答案:

答案 0 :(得分:2)

Matcher的使用看起来不错。我的猜测是你的应用程序正在为每个正则表达式调用matchIt两次。

答案 1 :(得分:1)

正则表达式[C]在刺痛中寻找角色C,显然每个刺痛都包含它