* 오늘의 진도
PHP
정규 표현식 - 소개
19. 정규 표현식 - 소개
정규표현식 (Regular Expression)
- 우리가 문자를 처리할 때, 원하는 문자를 검색하고, 검색한 문자를 다른 문자로 치환하는, 매우 편리하고 강력한 수단
정규표현식인 일종의 언어인데, php나 JS같은 언어처럼 단독으로 존재하는 언어가 아니고,
php나 JS같은 언어 안에 정규표현식이라고 하는 형태의 작은 언어로 내장되어 있는 언어이다.
그리고 정규표현식은 언어 안에서만 사용되는 것이 아니고,
개발자들이 쓴 에디터(ex. 서브라임 텍스트)같은 앱에서도 정규표현식을 이용해서 원하는 정보를 검색할 수 있다.
서브라임 텍스트에서 Ctrl+F를 누르면 검색창이 뜬다.
( )를 갖고 있는 모든 텍스트를 검색하고 싶다면?
제일 왼쪽에 정규표현식 버튼을 누르면
정규표현식 문법에 따라서 검색할 수 있게 된다.
\(.+\)
정규표현식의 단점: 직관적이지 못하다.
선행지식 - 아래 한 시간 분량의 수업을 먼저 듣기
https://opentutorials.org/module/622/5143
정규표현식 패턴들 - 정규 표현식
본 수업은 zvon의 정규표현식 tutorials를 이용한다. 실제 강의는 동영상을 참고하자. zvon은 아래의 URL을 통해서 접근 할 수 있다. http://zvon.org/comp/r/tut-Regexp.html#Pages~Contents 아래는 인터렉티브하게 정
opentutorials.org
정규 표현식에 대한 컨닝 페이퍼 - 지금은 없는 페이지라 안 뜸
preg_match: 내장함수(api) - 이 함수를 이용해서 정규표현식의 문법으로 데이터를 검색하고 추출할 수 있다.
첫번째 인자 - 정규표현식
※ i는 우리가 찾을 php라는 글자가 대소문자를 가르지 않는다는 뜻이다.
두번째 인자 - 조사하려고 하는 대상 텍스트
리턴값 - 매치되는 것이 있다면 1(php에서 true를 의미) / 없다면 0 / 문법적인 오류나 문제가 있다면 false
다시 첫번째 인자를 보자.
php에서 사용하는 표현식은 약간의 문법적인 요소가 들어간다. (php만의 특징)
앞 뒤에 \가 있다. 이런 것을 구분자라고 한다. 즉, 정규표현식과 정규표현식이 아닌 것을 구별해주기 위한 것이다.
구분자는 맨 앞에 왔으면 맨 뒤에도 와야 한다.
구분자로는 특수기호를 사용할 수 있는데, a, b 같은 알파벳은 사용할 수 없다.
구분자를 쓰는 이유는?
정규표현식인 부분과 정규표현식이 아닌 부분을 구분해주기 위해서
\foo bar\im에서 im을 pattern modifier라고 한다.
즉 패턴이 동작하는 방법을 수정하는 놈이라는 뜻이다.
pattern modifier에 대하여
https://www.php.net/manual/en/reference.pcre.pattern.modifiers.php
PHP: Possible modifiers in regex patterns - Manual
A hint for those of you who are trying to fight off (or work around at least) the problem of matching a pattern correctly at the end ($) of any line in multiple lines mode (/m). Unfortunately, I haven't got any access to a server with the latest PHP versio
www.php.net
i는 caseless라고 해서, 대소문자를 구분하지 않고 정규표현식이 동작하게 한다.
m은 multiline이다.
body$라고 하면, 맨 뒤의 body만 선택된다.
$는 경계(boundary)를 지정하는 패턴인데, 어떤 데이터의 가장 끝부분의 경계를 지정한다.
여기에는 여러 줄이 있다.
각각의 줄마다 body를 다 선택하게 하고싶다면 멀티라인 옵션에 체크하면 된다.
'PHP > 생활코딩' 카테고리의 다른 글
5/27 생활코딩 (0) | 2020.05.27 |
---|---|
5/26 생활코딩 (0) | 2020.05.27 |
5/25(2) 생활코딩 (0) | 2020.05.25 |
5/25 생활코딩 * 이미지 다루기 수강해야 함* (0) | 2020.05.25 |
5/24(4) 생활코딩 * Composer 나중에 보기 * (0) | 2020.05.24 |
댓글