ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 20221020 TIL 멋진 개발자 되기 프로젝트
    TIL 2022. 10. 20. 14:47

     

    나는 항상 개발자들이 정규식을 잘 쓰는 게 너무 멋있었다.

    나한테는 너무 어려워보이는 식들로 여러 패턴을 원하는 대로 쉽게 만들어내는 것처럼 보였기 때문이다.

    개발 공부를 제대로 시작하면서 정규식을 꼭 잘 쓰는 것이 한 가지 목표였다.

    그래서 몇 주 전부터 정규식 패턴을 만드는 것을 공부했고 이제 어느정도 정규식 패턴은 생성할 줄 알게 되었다.

    그런데 정규식 패턴을 사용하는 방법도 알아야 결국 어떤 언어에서 정규식을 사용할 수 있다.

     

    자바에서는 Pattern.compile안에 정규식을 써서 패턴을 생성하고,

    생성된 패턴의 matcher메소드 안에 문자열을 넣어서 Matcher를 만들어서 사용하면 된다.

    만약 패턴을 일정한 규칙에 따라 교체하고 싶다면 matcher.replaceAll 안에 함수를 넣으면 되고,

        public String process(String string) {
            Pattern pattern = Pattern.compile("\\w+"); // 원하는 정규식 써주기
            Matcher matcher = pattern.matcher(string.toUpperCase()); // 문자열 넣어주기
    
            return matcher.replaceAll(x -> lowerCaseAtOddIndex(x.group())); // 변경해주기
        }

    만약 패턴에 해당하는 문자열들을 배열로 만들려면

    List<String> array = new ArrayList<>();
    
    Pattern pattern = Pattern.compile("[0-9]{1,2}[SDT][*#]?");
    Matcher matcher = pattern.matcher(string);
    
    while(matcher.find()) {
        array.add(matcher.group());
    }

    Pattern.compile안에 정규식을 써서 패턴을 생성하고,

    생성된 패턴의 matcher메소드 안에 문자열을 넣어서 Matcher를 만들어서

    matcher.find()가 true인 동안 배열에 추가하여 패턴에 맞는 값들로 이뤄진 배열을 얻을 수 있다.

     

    자바스크립트에서는 훨씬 더 간단하게 정규식을 쓸 수 있다.

    export function changeCase(string) {
      return string.replace(/\w+/g, lowerCaseAtOddIndex);
    }

    문자열의 특정 패턴을 규칙에 따라 교체할 때 문자열.replace(정규식, 패턴에 적용할 함수) 를 쓰면 끝이다.

    이 때 패턴에 적용할 함수는 인자로 패턴에 해당하는 문자열을 인자로 받아서 처리하여 반환한다.

    정규식을 쓸 때는 /패턴/ 과 같이 따옴표로 감싸지 않고 사용하면 된다.

    만약 패턴에 해당하는 문자열들을 뽑아내고 싶다면 문자열.match(정규식)을 하면 패턴에 맞는 값들로 이뤄진 배열을 얻을 수 있다.

    const str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
    const regexp = /[A-E]/gi;
    const matches_array = str.match(regexp);

     

    정규식으로 쉽게 풀리는 문제들은 앞으로 최대한 찾아보지 말고 어떻게 사용하는지도 숙지해서 바로 풀어보자!

    https://www.jjal.today/data/file/gallery/1850096208_OUiDC3v8_7afbd0cfa7021b105f7146116943f25ab5056fa3.jpeg

    'TIL' 카테고리의 다른 글

    20221022 TIL ide 없는 삶  (0) 2022.10.22
    20221021 TIL 의존성 주입이 왜 제어를 역전하는 방식인가  (0) 2022.10.21
    20221019 TIL 왜일까  (0) 2022.10.19
    20221018 TIL 반환을 하자!!!  (0) 2022.10.18
    20221016 TIL 신기한 JS세계  (0) 2022.10.17

    댓글

Designed by Tistory.