본문 바로가기
프로그래밍 놀이터/Tips

[도서 정리] 부록A. 많이 쓰는 앱과 언어에서 활용하는 정규식 - 손에 잡히는 10분 정규 표현식

by 돼지왕 왕돼지 2020. 1. 3.
반응형

부록A. 많이 쓰는 앱과 언어에서 활용하는 정규식 - 손에 잡히는 10분 정규 표현식



* grep


-

grep 은 파일이나 표준 입력된 텍스트를 대상으로 검색을 수행하는 유닉스 유틸리티다.

grep 에서 다음 사항 중 하나를 선택하면, 기본, 확장, 펄(perl)과 호환되는 정규식을 쓸 수 있다.


-E 로 확장 정규식 사용

-G 로 기본 정규식 사용

-P 로 펄 정규식 사용



-

정규식이 지닌 정확한 특징과 기능은 어떤 선택 사항을 선택했는지에 따라 달라진다.

대다수 사용자들은 표준에 가깝다는 이유로 펄 정규식을 선택한다.



-

기본적으로 grep 은 일치하는 부분이 있다면, 그 줄을 모두 표시한다. 만약 정확히 일치하는 부분만 보고 싶다면 -o 옵션을 쓴다.

-v 옵션은 일치한 부분을 반전시켜 일치하지 않는 줄만 표시한다.

-c 옵션은 일치한 내용을 보여주지 않고 일치하는 개수를 표시한다.

-i 옵션은 대소문자를 구별하지 않고 일치시킨다.

grep 은 찾기 명령만 수행하고 치환 명령은 지원하지 않으므로 치환을 사용할 수 없다.





* 자바


-

정규식 표현과 검색은 java.util.regex.matcher 클래스와 다음 메서드로 지원한다.


find() : 문자열에서 패턴과 일치하는 부분이 있는지 찾는다.

lookingAt() : 문자열이 주어진 패턴으로 시작하는지 일치시켜본다.

matches() : 문자열 전체를 주어진 패턴과 일치시켜본다.

replaceAll() : 일치하는 부분을 모두 치환한다.

replaceFirst() : 처음 일치하는 부분만 치환한다.



-

java.util.regex.pattern 클래스를 써서 간단한 래퍼 메서드를 사용할 수 있다.


compile() : 정규식을 패턴으로 컴파일한다.

flags() : 패턴에 설정되어 있는 일치 플래그를 반환한다.

matches() : 문자열 전체를 주어진 패턴과 일치시켜 본다.

pattern() : 만들었던 패턴에서 정규 표현식 부분을 문자열로 반환한다.

split() : 문자열을 하위 문자열로 나눈다.



-

조건 달기는 지원하지 않는다.

\E, \l, \L, \u, \U 를 이용한 대소문자 변환은 지원하지 않는다.

\b 를 통한 백스페이스 일치도 지원하지 않는다.

\z 는 지원하지 않는다.





* 자바스크립트


-

String 과 RegEx 객체를 다음 메서드로 처리하여 정규식을 구현한다.


RegEx 객체의 exec 메서드 : 일치하는 부분을 찾는다.

String 객체의 match 메서드 : 문자열을 찾는다.

String 객체의 replace 메서드 : 치환 명령을 수행한다.

String 객체의 search 메서드 : 문자열에서 일치하는 부분이 있는지 검사한다.

String 객체의 split 메서드 : 문자열 하나를 여러 개로 나눈다.

RegEx 객체의 test 메서드 : 주어진 문자열이 일치하는지 검사한다.



-

자바스크립트는 플래그(flag)를 사용해 전역 대소문자를 구별해 검색한다.

g 로 전역을 설정하고, i 는 대소문자를 구별하지 않고 일치시키며, 이 두개를 합쳐서 gi 로 표시하기도 한다.

버전 4 이상의 브라우저에서 지원하는 변경자로, 다중행 문자열을 지원하는 m, 단일행 문자열을 지원하는 s, 정규식 안에 포함된 공백을 무시하는 x 지시자가 추가되었다.

역참조를 사용할 때, $₩는 일치하는 문자열 앞에 있는 문자열을 모두 반환하고, $'는 일치하는 문자열 뒤에 오는 문자열을 모두 반환한다. $+는 마지막 하위 표현식과 일치한 내용을 반환하며, $&는 일치한 문자열을 모두 반환한다.

자바스크립트에는 RegExp 라는 전역 객체가 있어, 정규식을 실행한 다음에 관련된 정보를 얻어올 수 있다.

포직스(POSIX) 문자 클래스는 지원하지 않는다.

\A, \Z 는 지원하지 않는다.





* 마이크로 소프트 닷넷



* 마이크로소프트 SQL 서버 T-SQL



* 마이크로소프트 비주얼 스튜디오 닷넷



* MySQL



* 오라클 PL/SQL



* 펄


-

펄은 정규식 구현에서, 말하자면 할아버지 격이다.

그래서 대다수 구현은 펄과 호환성을 유지하려 한다

정규식 지원은 펄의 핵심 부분인 덕에, 명령과 패턴을 써넣기만 하면 간단하게 사용할 수 있다.


m/패턴/ : 주어진 패턴으로 일치

s/패턴/패턴/ : 치환 명령 수행

qr/패턴/ : 나중에 사용할 Regex 객체를 반환

split() : 문자열을 하위 문자열로 나눈다.



-

변경자가 패턴 뒤에 나올 수 있다.

검색할 때 /i 를 사용하면 대소문자를 구별하지 않는다는 의미고, /g 를 사용하면 전역, 즉 일치하는 모든 것을 일치시킨다는 의미다.

역참조를 사용할 때, $₩는 일치하는 문자열 앞에 나오는 문자열을 모두 반환하고, $’는 일치하는 문자열 뒤에 나오는 문자열을 모두 반환한다. $+는 마지막 하위 표현식과 일치한 내용을 반환하며, $&는 일치한 문자열을 모두 반환한다.





* PHP



* 파이썬



* 루비




반응형

댓글