티스토리 뷰
정규표현식이란?
문자열에서 특정한 규칙을 가지는 문자열의 집합을 찾아내기 위한 검색 패턴.
검색 패턴으로 문자열 검색이나 교체등의 작업에 사용할 수 있다.
php에는 2가지의 정규 표현식이 있다.
1.POSIX
2.PCRE
POSIX이 배우기 쉽고 실행속도가 빠르다.
PCRE는 POSIX 정규 표현식을 확장했기 때문에 더 강력하고 유연하게 동작.
[POSIX]
정규표현식 리터럴
문법은
/검색패턴/플래그
형식이다.
슬래시(/)로 시작해서 슬래시(/)로 끝난다.
preg_match함수
해당 문자열에서 전달 받은 정규표현식과 일치하는 패턴을 검색한다.
preg_match($pattern,$subject [,$matches]); //[ ]는 선택사항이다.
첫 번째 인자로 정규표현식에 해당하는 패턴을 받고
두 번째 인자로 검색할 문자열을 전달한다.
검색 결과는 배열로 반환되며 세 번째 인자로 반환값이 직접 전달되기도 한다.
preg_match함수는 정규 표현식에 해당하는 패턴이 검색되면, 더는 검색하지 않고 검색을 중단한다.
일치하는 패턴이 존재하면 1을 반환하고, 존재하지 않으면 0을 반환.
preg_match_all함수
문자열에서 찾을 패턴에 맞는 모든 패턴을 리턴해줌.
※preg_match와의 차이점은 preg_match는 한개만 반환하지만 preg_match_all은 모든 패턴을 리턴한다.
단순 패턴 검색
정규표현식을 사용하여 단순한 문자열을 검색하고자 할 때는 문자열을 직접 나열하면 된다.
ex)
$subject="간장 공장 공장장은 강 공장장이고, 된장 공장 공장장은 장 공장장이다.";
if(preg_match('/공장/',$subject){
echo "공장있음";
}else { echo "공장 없음";}
플래그
찾을 패턴을 작성할 때 플래그를 사용하여 기본 검색 설정을 변경할 수 있다.
문자 |
의미 |
i |
검색 패턴을 비교할 때 대소문자를 구분하지 않도록 설정 |
g |
검색 패턴을 비교할 때 일치하는 모든 부분을 선택하도록 설정 |
m |
검색 패턴을 비교할 때 여러 줄의 입력 문자열을 그 상태 그대로 여러 줄로 비교하도록 설정. |
y |
대상 문자열의 현재 위치부터 비교를 시작하도록 설정. |
u |
대상 문자열이 utf-8로 인코딩된 것으로 설정. |
ex)
$subject="ABabaabbAABB";
$preg=preg_match("/AB/gi",$subject); //일치하는 모든 부분을 대소문자 구분없이 출력
echo $freg; //AB,ab,AB 출력
정규 표현식
문자 |
의미 |
예제 |
. |
임의의 한 문자 |
/.ap/ -> aap bap cap @ap %ap |
* |
바로앞의 문자를 의미하고 해당문자가 0번이상 존재하는 문자 |
/a*p/ -> p ap aap aaap |
+ |
바로 앞의 문자가 1번 이상 나타날 경우를 검색 |
s+k -> sk ssk sssk |
? |
바로앞의 문자를 의미하고 0번 또는 1번만 나타나는 경우 |
ex?e -> ee exe |
^ |
바로앞의 문자를 의미하고 그 문자로 시작됨 | ^the -> the boy |
$ |
해당문자로 끝나는 것을 의미 |
$bc ->abc |
[] |
대괄호 안의 문자열중 하나의 문자를 의미 |
[a-z] -> 알파벳 중 하나 |
{} |
앞에 있는 문자 또는 문자열의 개수 |
a{2,4}B(a가 2번이상 4번 이하로 나타나는 경우) -> aaB aaaB aaaaB |
() |
괄호 안의 문자열을 그룹화 |
A(BC){2} A뒤에 BC가 두번이상나타나는 문자열 |
| | or 연산자, 여러개를 검색할 수 있다 | preg_match_all('/abc|def|ghi/',$subject); |
※정규표현식의 특수문자를 문자자체로 인식되게 사용할 경우에는 \를 붙임.
<p class="no_today"></p>
$rex="/\<p class=\"no_today.+\">(.+)\<\/p>/";
<em class="no_up">~~</em>
$rex = "/\<em class=\"no_.+\"\>(.*)\<\/em\>/";
'웹 해킹 > 웹 공부' 카테고리의 다른 글
[PHP] mysql_fetch_array,row (1) | 2020.08.04 |
---|---|
[php] $_SERVER함수 (0) | 2020.07.31 |
소켓(socket)이란 (0) | 2020.07.23 |
robots.txt란? (0) | 2020.07.23 |
구글 도크 (0) | 2020.07.21 |
- Total
- Today
- Yesterday
- 이상탐지
- 회귀
- 딥러닝
- 로지스틱회귀
- porks
- automotive ethernet
- one-to-many
- 논문 잘 쓰는법
- many-to-many
- AVTP
- PCA
- CAN-FD
- Python
- SOME/IP
- problem statement
- 차량 네트워크
- automotive
- SVM
- HTML
- AE
- Ethernet
- cuckoo
- 케라스
- 차량용 이더넷
- 크로스 엔트로피
- AVB
- 머신러닝
- json2html
- many-to-one
- 단순선형회귀
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |