728x90

위키백과에서 정규 표현식은 "특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다." 라고 설명합니다. 쉽게 말하면 문자열을 잘 다루기 위해 필요한 도구라고 생각됩니다. 정규 표현식을 잘 익혀놓으면 문자열 찾기, 수정하기, 입력 제한 하기 등 여러 곳에서 사용할 수 있습니다.

 

일반적으로 문자열 찾기, 수정하기 등은 에디터나 프로그램에서 지원하지만 찾는 문자열에 조건을 부여한다면 좀 더 정확하고 필요한 부분만을 접근할 수 있습니다. 예를 들어 "T라는 단어가 4번 반복되는 문자열을 찾는다"라는 식으로 좀 더세밀한 조건을 통해 검색할 수 있습니다. 그리고 입력에 제한이라하면 이 UI에는 IP를 입력받겠다, 이메일 주소를 받겠다, 4자리 16진수 데이터를 받겠다 등을 정규 표현식을 통해 제한을 둘 수 있습니다. Qt에서 위와 같이 입력 제한을 두는 예제는 이 링크를 클릭하시면 확인하실 수 있습니다.

 

정규 표현식을 공부하면서 테스트해볼 수 있는 사이트로는 https://regexr.com/ 가 있습니다. 

 

RegExr: Learn, Build, & Test RegEx

RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).

regexr.com

연습하고자 하는 문자열을 아래 본문에 적고 Expression에서 정규 표현식을 입력하면 조건에 만족하는 문자열을 보여주게 됩니다.

다른 사이트로는 https://regexper.com/ 가 있습니다. 이 사이트는 정규 표현식을 입력하면 그림으로 보여주기 때문에 공부할때 유용합니다.

 

먼저 문자 그대로를 찾는 방법인데 위에서 나왔듯이 그냥 문자열 자체도 정규표현식이 될 수 있습니다. 

표현식 뒤에 붙어있는 g는 Expression Flag라고 합니다. 플래그 적용 방법은 각기 다른데 일반적으로 /"정규표현식"/"플래그" 로 사용합니다.

만약 Reg로 시작하는 글자를 찾고 싶을때 "."를 사용할 수 있습니다. 원하는 글자 만큼 붙여주면 됩니다. "."와 같은 특수 문자를 메타 문자라고 합니다. 

다른 메타문자로는 "[]"이 있는데 []안에 있는 문자 혹은 범위로 문자를 찾게 됩니다. [Aa]로 찾게되면 A혹은 a를 찾게되됩니다. 

여기서 "-"라는 메타문자를 사용하면 범위를 정해줄 수 있습니다. "-"은 "[]" 메타 문자안에서만 범위의 의미를 갖기 때문에 "[]"안에 사용해줘야 합니다.

"[]"안에서 "^"를 붙이게 되면 그 조건이 아닌 값들을 찾게 됩니다.

A-Z는 A~Z 사이의 아스키 코드값을 찾게되고 a-z, 0-9, A-F 등으로 사용할 수 있습니다. 이 패턴들 중에서 많이 쓰이는 것들은 다시 메타문자 또는 POSIX 문자 클래스로 정의되어 있습니다.

- \d = [:digit:] = [0-9]

- \D = [^0-9]

- \w = [a-zA-Z0-9_]

- \W = [^a-zA-Z0-9_]

- \s = [\f\n\r\t\v] 

    -> \f : 페이지 넘김

    -> \n : 줄바꿈

    -> \r : 캐리지 리턴

    -> \t : 탭

    -> \v : 수직 탭

여기서 만약에 메타문자가 아닌 "[" 자체를 차고 싶을 때는 앞에 역슬래시("\")를 붙이면 됩니다.

"\" 자체를 찾고싶으면 "\\"로 검색하면 됩니다.

위처럼 메타 문자로 사용되는 아스키 문자 자체를 찾고싶을 때는 앞에 역슬래시를 붙이면 됩니다.

 

728x90

+ Recent posts