2012-08-31 1 views
1

DB2 예제의 권한 부여는 다음과 같습니다.Pattern & Matcher 클래스를 사용하는 java의 패턴 일치 부여 문

grant insert,update,delete on ABC.TABLE_NAME to group DACT_RW, group DACT_RW_BATCH1 

나는 같은 것을 사용하여 정규식 패턴을 구축을 위해 노력하고있다 :

Pattern.compile("[g|G][r|R][a|A][n|N][t|T][ \\t\\n\\x0B\\f\\r]+[i|I][n|N][s|S][e|E][r|R][t|T][ \\t\\n\\x0B\\f\\r]*[,][ \\t\\n\\x0B\\f\\r]*[u|U][p|P][d|D][a|A][t|T][e|E][ \\t\\n\\x0B\\f\\r]*[,][ \\t\\n\\x0B\\f\\r]*[d|D][e|E][l|L][e|E][t|T][e|E][ \\t\\n\\x0B\\f\\r]+[o|O][n|N][ \\t\\n\\x0B\\f\\r]+" + eodAppendedDbObjectName + "[ \\t\\n\\x0B\\f\\r]+[t|T][o|O][ \\t\\n\\x0B\\f\\r]+[g|G][r|R][o|O][u|U][p|P][ \\t\\n\\x0B\\f\\r]+DACT_RW[ \\t\\n\\x0B\\f\\r]*[,][g|G][r|R][o|O][u|U][p|P][ \\t\\n\\x0B\\f\\r]+DACT_RW_BATCH1$"); 

그러나 어떻게 든, 내가 올바른 보조금을 지정하는 경우에도, 그것은 일치지고 있지 않습니다.

위의 패턴 편집에서 잘못된 점을 제안 해 주시겠습니까? 또는 Java에서 패턴을 일치시키는 더 좋은 방법을 제안합니다.

+2

당신이 모두 대문자/소문자의 조합을 확인 할 필요가 없습니다는 Pattern.compile (patternStr, Pattern.CASE_INSENSITIVE)를 사용하여 패턴이 덜 복잡해진다 경우 –

+2

'[g | G]를'하나와 일치 g'''''''''''''''''''''char''도 포함하고 있습니다. 캐릭터 클래스 안에서, "정상적인"메타 캐릭터는 "특별한 힘"이 없습니다. –

+0

@ Stefan Neubert : Pattern.CASE_INSENSITIVE 옵션을 알고 있습니다. 그러나 진술의 단어 중 대문자와 소문자가 구별되기 때문에 패턴을 일치시키는 데 사용할 수는 없습니다. – user1587504

답변

0

[ \\t\\n\\x0B\\f\\r]\\s으로 바꿔 문장을 단순화했으며이 방법이 효과적입니다.

public static void main(String [] args) { 
    String[] vals = {"grant  insert,update,delete on ABC.TABLE_NAME to group DACT_RW, group DACT_RW_BATCH1"}; 
    String eodAppendedDbObjectName = "ABC.TABLE_NAME"; 
    Pattern p = Pattern.compile("[gG][rR][aA][nN][tT]\\s+[iI][nN][sS][eE][rR][tT]\\s*,\\s*[uU][pP][dD][aA][tT][eE]\\s*,\\s*[dD][eE][lL][eE][tT][eE]\\s+[oO][nN]\\s+" + eodAppendedDbObjectName + "\\s+[tT][oO]\\s+[gG][rR][oO][uU][pP]\\s+DACT_RW\\s*,\\s*[gG][rR][oO][uU][pP]\\s+DACT_RW_BATCH1$");   
    for (String s : vals) { 
     Matcher m = p.matcher(s); 
     if (m.matches()) { 
      System.out.println(s + " matches."); 
     } else { 
      System.out.println(s + " does not match."); 
     } 
    } 
} 
+1

CASE_INSENSITIVE로 완료/업데이트 –

+0

사실 매우 단순한 것입니다!. 그것은 일했다 :) 고마워, – user1587504