부록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
* 파이썬
* 루비
'프로그래밍 놀이터 > Tips' 카테고리의 다른 글
[도서 정리] 2. Git 의 기초 #1 - ProGit (0) | 2020.01.05 |
---|---|
[도서 정리] 1. 시작하기 - ProGit (0) | 2020.01.04 |
[도서 정리] 11. 정규 표현식으로 해결하는 일반적인 문제들 - 손에 잡히는 10분 정규 표현식 (0) | 2020.01.02 |
[도서 정리] 10. 조건 달기 - 손에 잡히는 10분 정규 표현식 (0) | 2020.01.01 |
[도서 정리] 9. 전방탐색과 후방탐색 - 손에 잡히는 10분 정규 표현식 (0) | 2019.12.31 |
댓글