게으른 개발자의 끄적거림

Java replaceAll 슬래시(/) 변환 방법(정규식)

끄적잉 2023. 11. 28. 21:28
728x90

 Java의 `String.replaceAll` 메서드를 사용할 때 슬래시(`/`)를 포함한 정규표현식을 적용하는 경우, 슬래시는 정규표현식에서 특수문자로 간주되어 escaping이 필요합니다. 슬래시 자체를 찾기 위해서는 `\\`로 escaping해야 합니다.

예를 들어, 문자열에서 모든 슬래시를 언더스코어(`_`)로 바꾸고 싶다면 다음과 같이 할 수 있습니다:

########################### ########################### ###########################


public class Main {
    public static void main(String[] args) {
        String input = "This/is/a/test/string";
        String replaced = input.replaceAll("/", "_");
        System.out.println(replaced);
    }
}


########################### ########################### ###########################

만약 정규표현식을 사용하여 슬래시를 찾고 싶다면, 다음과 같이 해야 합니다:

 

 

 


########################### ########################### ###########################


public class Main {
    public static void main(String[] args) {
        String input = "This/is/a/test/string";
        String replaced = input.replaceAll("/", "\\\\/");
        System.out.println(replaced);
    }
}


########################### ########################### ###########################

여기서 `replaceAll`의 두 번째 인자는 정규표현식이기 때문에 슬래시를 찾기 위해 `\\/`로 escaping된 것입니다.

만약 이를 더 간편하게 하려면, `replace` 메서드를 사용할 수 있습니다. `replace`는 일반 문자열을 찾아 교체하는 데 사용됩니다:

 

 


########################### ########################### ###########################


public class Main {
    public static void main(String[] args) {
        String input = "This/is/a/test/string";
        String replaced = input.replace("/", "_");
        System.out.println(replaced);
    }
}


########################### ########################### ###########################

이 경우에는 정규표현식이 아니기 때문에 escaping이 필요하지 않습니다.

728x90