정규표현식
- POSIX 정규표현식과 POSIX에서 확장된 Perl 방식의 PCRE가 대표적이다.
- 정규표현식 간에는 약간의 차이점이 있으나 거의 비슷하다.
문자클래스
'[]' 라는 메타문자가 있는데, 대괄호 안의 문자열의 범위중 한 문자만 선택한다는 의미이며 문자클래스 내부에서는 Meta문자를 사용하지 못하거나 의미가 다르게 사용된다.
특수문자는 앞에 \를 붙여서 인식할 수 있다. _, - 가 포함된 문자를 찾고싶다면 [\_\-]+ 로 찾으면 된다.
Flag
자주 사용하는 flag는 g, i, m이 있으며 선택사항이다. flag를 사용하지 않는경우 문자열 내에서 검색대상을 단 한번만 찾고 끝낸다.
var re:RegExp = /abc/gimsx;
g(global) 플래그
g플래그가 설정되지 않은경우 조건이 가장먼저 일치하는 값을 반환한다..
var str:String = "she sells seashells by the seashore.";
var pattern:RegExp = /sh\w*/;
trace(str.match(pattern)) // output: she
g플래그가 설정되면 스트링에서 모든 글자를 검사하여 패턴에 일치되는 모든 반환값을 가져온다.
var str:String = "she sells seashells by the seashore.";
var pattern:RegExp = /sh\w*/g; // The same pattern, but this time the g flag IS set. trace(str.match(pattern));
// output: she,shells,shore
i(ignoreCase)플래그
기본적으로 일반 표현식에서는 대소문자를 구분하는데, i플래그를 설정정하면 대소문자를 무시하고 찾아준다.
notepad++에서는 flag를 지원하지 않지만 대소문자 구분은 체크/해제 할 수 있다.
m(multiline) 플래그
개행을 인식하여 각각의 행에서 정규식을 적용해 데이터를 찾아준다.
var str:String = "Test\n";
str += "Multiline";
trace(str.match(/^\w*/g)); // Match a word at the beginning of the string.
//output: Test
단어로 시작하는 데이터를 찾을 때 일반 표현식에 g플래그가 설정되어 있고 개행이 존재하더라도 하나의 문자열이기 때문에 "Test\nMultiline" 이라는 하나의 문자열로 보고 단어로 시작하는 부분인 Test까지만 찾아준다.
var str:String = "Test\n";
str += "Multiline";
trace(str.match(/^\w*/gm)); // Match a word at the beginning of lines.
//output: Test, Multiline
"Test
Multiline" 처럼 각각의 행으로 인식하여 행마다 정규표현식을 이용해 Test, multiline 두 단어를 찾아준다.
* g 플래그를 설정하지 않으면 하나의 변수이기 때문에 Test를 인식한 후 반환하고 빠져나온다.
ex )
a00으로 시작하고 추가로 한글 5자리 이상인 문자를 찾기 -> ^a00[ㄱ-힣]{5,}
email -> [a-z0-9A-Z\_\-]{3,}@[a-z0-9A-Z\_\-]{3,}.(kr|com|org|net)
예시일뿐 완벽한건 아니기때문에 가져다 쓰진 말자.
'기타' 카테고리의 다른 글
vim 자주 사용하는 명령어 (0) | 2020.10.04 |
---|---|
Python 설치 / 사용 시 에러 (0) | 2019.10.24 |
Windows cmd 명령어 (0) | 2019.10.18 |
Public DNS resolving to localhost (0) | 2019.10.07 |