Wildcard 가 포함된 string 을 regular expression 으로 변환하기
java 에서 프로그래밍을 하면 .properties 를 사용해서 설정값을 불로오는 경우가 종종있다. 이 경우에 일반적으로 String 으로 값을 가져온다. 그런데 wildcard(* 같은 문자) 가 가능하도록 하고 싶었다. 그래서 처음 string 을 replaceAll 을 이용해서 변환하려고 했는데, 이게 되게 여러번 해야 할 듯 싶었다.
그래서 좀 찾아봤더니 아래처럼 한 character 씩 읽어서 쓰는 작업을 반복하면서 wildcard 문자가 나오면 해당하는 regular expression(정규표현시) 문자로 넣어주는 방법을 사용하는 글이 있었다. 개인적으로 이 방법이 더 효율적인 듯 하다.
code from : Convert wildcard to a regex expression - Real's Java How-to
public static String wildcardToRegex(String wildcard){ StringBuffer s = new StringBuffer(wildcard.length()); s.append('^'); for (int i = 0, is = wildcard.length(); i < is; i++) { char c = wildcard.charAt(i); switch(c) { case '*': s.append(".*"); break; case '?': s.append("."); break; // escape special regexp-characters case '(': case ')': case '[': case ']': case '$': case '^': case '.': case '{': case '}': case '|': case '\\': s.append("\\"); s.append(c); break; default: s.append(c); break; } } s.append('$'); return(s.toString()); }
댓글 없음:
댓글 쓰기