我需要匹配数组中不是以"KB“字符串开头的字符串。我已经试过了
String[] ar = {"KB_aaa","KB_BBB", "K_CCC", "!KBD", "kb_EEE", "FFFF"};
Pattern p = Pattern.compile("[^(^KB)].*");
for(String str : ar)
{
Matcher m = p.matcher(str);
if(m.matches())
System.out.println(str);
}但它仍然不匹配"K_CCC“。谢谢
发布于 2011-10-05 19:48:41
匹配任何不以KB开头的内容的正则表达式为:
^(?!KB).*要在java中执行此操作,请执行以下操作:
if (str.matches("^(?!KB).*$")) ...发布于 2011-10-05 19:47:44
我不会把RegEx用在所有东西上。
for(String str : ar)
{
if(!str.toUpperCase().startsWith("KB"))
System.out.println(str);
}发布于 2011-10-05 20:01:30
从你的问题的表达方式来看,我不能完全确定你是否希望匹配区分大小写。此正则表达式:
(?i)[^k][^b].*使用标志(?i)关闭区分大小写,并应根据需要进行设置。
https://stackoverflow.com/questions/7660750
复制相似问题