정규표현식

Y·2023년 7월 10일
0

백준 1013번을 풀면서 정규표현식을 사용하게 됐다. 직접 파싱하는 절차를 구현할 수도 있겠으나, re 모듈로 정규표현식을 바로 매칭할 수 있으니 그렇게 푸는 게 편할듯하다. (만약 직접 구현한다면 while문 활용하거나 재귀함수 이용해서 풀면 될 것 같다.) 하지만 정규표현식에 대해 잘 모른다면 그 개념은 공부해보는 게 좋을 것 같음. (나는 컴파일러 강의 수강하면서 대략적인 개념은 알고있기 때문에 패스함)

python에서는 re 모듈을 활용해서 정규표현식을 사용할 수 있다.

 import re
 r = re.compile('') #''안에 정규표현식
 r.match('') #''안에 매치해보고자 하는 문자열

이러한 방식으로 사용할 수 있는데, 1013번에서는 match로는 문제가 해결되지 않는다. match는 그냥 정규표현식에 대해 매치된 문자열을 받아오는 방식이라 그렇다. (전체 문자열이 매치되지 않아도 일부 문자열이 매치되면 해당 일부문자열을 먼저 반환한다. ex)r.match('10010111') -> <re.Match object; span=(0, 6), match='100101'> 반환.) 그래서 fullmatch를 사용해야한다.

추가적으로 이전에 프로젝트를 하면서 java에서도 정규표현식을 사용한 적이 있었는데, java에서의 정규표현식 활용법도 한 번 같이 정리해보고자 한다. java에서는 Pattern 클래스를 활용해서 정규표현식을 사용할 수 있다. Pattern.matches(정규표현식, 문자열)이며 boolean 값을 반환한다. 혹은 Matcher을 이용할 수도 있다. 이때는 Pattern.compile(정규표현식).matcher(문자열) 을 이용해서 Matcher 객체를 생성할 수 있다. Pattern.compile().matcher().find()를 활용하면 boolean값을 반환한다.

profile
개발자, 학생

0개의 댓글