我要判断字符串是否包含如下字符:cr|0x0d|lf|0x0a|\\|exec|insert|select|delete|update|count|chr|mid|master|truncate|char|declare|drop|create|and|or字符以 | 分割

解决方案 »

  1.   

    基本上直接用就行了,用的时候注意两点,一是转义,二是包含关系当使用“|”表示“或”的关系时,需要注意分隔的各元素之间的包含关系,因为分支结构(...|...|...)是由左向右尝试匹配的,一旦左侧分支匹配成功,就不再向右尝试,所以要把可能被包含的分支放在右侧,比如楼主所给例子中“cr”是被“create”包含的,所以“cr”应该放在“create”分支的右侧当然,如果分支的左右顺序不会影响匹配结果时,可以不用考虑顺序问题,比如使用“\b”做了限定Pattern pattern = Pattern.compile("\\b(0x0d|0x0a|exec|insert|select|delete|update|count|master|truncate|char|declare|drop|create|and|chr|mid|or|cr|lf|\\\\)\\b"); 
    Matcher m = pattern.matcher(str);
    System.out.println(m.find());