您好我有以下文字:
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后跟非单词字符..但它不起作用。
答案 0 :(得分:2)
Matcher的使用看起来不错。我的猜测是你的应用程序正在为每个正则表达式调用matchIt
两次。
答案 1 :(得分:1)
正则表达式[C]
在刺痛中寻找角色C
,显然每个刺痛都包含它