회원가입아이디/비번찾기
홈으로

preg match에 관한 정규식
1년 전
정규표현식

위치와 이스케이핑
^who -> 맨 앞 who 찾기
who$ -> 맨 뒤 who 찾기
$ -> $ 찾기
^$ -> 맨 앞 $ 찾기
$$ -> 맨 뒤 $ 찾기
-> 찾기
모든 문자 그룹
. -> 어떠한 문자 모두를 가리킴
...... -> 문자 6덩어리를 가리킴
. -> . 찾기
... -> .(any character). 찾기
특정 문자 범위
[oyu] -> o or y or u 찾기
[dH]. -> d(any character) or H(any character) 찾기 -> dy, HH, do ... 등등
[owy][yow] -> ow, oy, ww, ... (문자 2개 찾기)
[C-K] -> C부터 K 범위에 있는 알파벳 문자 1개 찾기 -> [CDEFGHIJK]와 같은 의미.
[a-d] -> a부터 d까지
[2-6] -> 2부터 6까지
[C-Ka-d2-6] -> C~K or a~d or 2~6 사이인 문자 1개 찾기
[^CDghi45] -> C, D, g, h, i, 4, 5가 아닌 문자 찾기 -> ^가 []안에 쓰이면 부정의 의미
[^W-Z] -> W, X, Y, Z가 아닌 문자 찾기
서브패턴
(on|ues|rida) -> 문자열에서 on이거나 ues이거나 rida인 부분 찾기
(Mon|Tues|Fri)day -> Monday이거나 Tuesday이거나 Friday인 부분 찾기
..(id|esd|nd)ay -> 문자 2개 아무거나와 ay사이가 id이거나 esd이거나 nd인 부분 찾기
수량자
a*b -> 문자열에서 a가 0 ~ 여러개이고 뒤에 b가 붙는 부분 찾기 -> b, ab, aab, aaab 찾아짐.
a+b -> b 앞에 a가 1개 이상인 부분 찾기
a?b -> b 앞에 a가 없거나 1개인 부분 찾기
[-@]* -> [] 후보군에 속하는 문자가 없거나 여러개인 부분 찾기 -> -@-, --
*+ -> *이 1개 이상인 부분
-@+- -> 앞과 뒤가 -이고, @가 1개 이상인 부분 찾기 -> -@-, -@@-, -@@@-, ...
[^ ]+ -> 공백이 아닌 것이 1개 이상인 부분 찾기
-X?XX?X -> -XX, -XXXX, -XXX
-@?@?@?- -> --, -@-, -@@-, -@@@-
.{5} -> 어떠한 문자이던간에 5글자 선택하기
[els]{1,3} -> e또는 l또는 s 조합으로 1~3개 문자만 선택 -> e, ee, el, ess
[a-z]{3,} -> a부터 z까지 문자의 조합 중 3개 이상인 부분 선택
AB*A == AB{0,}A
AB+A == AB{1,}A
AB?A == AB{0,1}A
r.* -> r, rfjdaklsfjslk, riinlk dkfjls (공백도 다 선택됨.)
r.*? -> r만 가능 -> 수량자 뒤에 ?가 오면 해당 수량자가 가질 수 있는 최소 수를 선택하게 됨.
r.+? -> rx, rd, rb, rq, rr
r.?? -> r만 가능
경계
w -> word(알파벳, 숫자, _)만 선택
w == [A-z0-9_]
W -> word가 아닌 것 선택
d -> 숫자만 선택
D -> 숫자가 아닌 것 선택
b -> 단어 boundary
bw -> 단어의 첫 글자 선택
wb -> 단어의 마지막 글자 선택
bwb -> 단어의 길이가 1인 단어 선택
bw+b -> 단어 별로 선택됨.
B.B -> 단어 경계(앞, 뒤)를 제외한 나머지 선택됨.
A -> 단어 경계의 시작점을 가리킴 (글자 가리키지 않음.)
A... -> 시작 경계로부터 글자 3개
...Z -> 끝 경계로부터 글자 3개

<?php
// php에서는 정규표현식을 /(정규표현식)/(pattern modifier) 으로 작성한다.
// match 되는 부분 있으면 1, 없으면 0 리턴
//
// pattern modifier
// i: 패턴 매칭을 할 때, 대소문자를 구분하지 않도록 한다.
// m: 멀티라인으로 작동. (^나 $를 여러줄에서 사용할 때, match되는 부분들 중 맨 앞/맨 뒤에만 적용됨.)
if (preg_match("/php/i", "PHP is the web scripting language of choice.")) {
// PHP에서 걸림. -> match -> 1 리턴.
echo "A match was found. (1)<br>";
} else {
echo "A match was not found. (1)<br>";
}


// b는 단어의 경계를 의미한다. 그렇기 때문에 b로 감싸진 web은 web이라는 독립된 단어를 의미한다. website는 이 조건에 해당하지 않는다.
if (preg_match("/bwebb/i", "PHP is the web scripting language of choice.")) {
echo "A match was found. (2)<br>";
} else {
echo "A match was not found. (2)<br>";
}

if (preg_match("/bwebb/i", "PHP is the website scripting language of choice.")) {
echo "A match was found. (3)<br>";
} else {
echo "A match was not found. (3)<br>";
}

$subject = 'coding everybody http://opentutorials.org egoing@egoing.com 010-0000-0000';
preg_match('/(http://w+.w+)s(w+@w+.w+)/', $subject, $match);
echo '<pre>';
var_dump($match);
echo '</pre>';

echo "homepage: " . $match[1] . '<br>';
echo "email: " . $match[2] . '<br>';

// get host name from url
// ?: 을 붙여줌으로써 해당 부분이 match2 배열에 담기지 않도록
preg_match("/^(?:http://)?([^/]+)/i", "http://www.php.net/index.html", $match2);

echo '<pre>';
var_dump($match2);
echo '</pre>';

$host = $match2[1]; // www.php.net

// get last two segments of host name
preg_match("/[^.]+.[^.]+$/i", $host, $match3);
echo "domain name is: {$match3[0]}";

// back reference 지정
// key로 꺼내올 수 있음.
$str = 'foobar: 2008';
preg_match('/(?P<name>w+): (?P<digit>d+)/i', $str, $match4);

echo '<pre>';
var_dump($match4);
echo '</pre>';

// preg replace 1
$string = 'April 15, 2003';
$pattern = '/(w+) (d+), (d+)/i';
$replacement = '${1}1, $3'; // $1, ${1} 첫번째 서브패턴 값인데, ${1}은 다른문자와 섞어 쓸 때 사용
echo preg_replace($pattern, $replacement, $string);

// preg replace 2
$string2 = 'The quick brown fox jumped over the lazy dog.';
$patterns = array();
$patterns[0] = '/quick/';
$patterns[1] = '/brown/';
$patterns[2] = '/fox/';
$replacements = array();
$replacements[2] = 'bear';
$replacements[1] = 'black';
$replacements[0] = 'slow';
echo preg_replace($patterns, $replacements, $string2);

// preg replace 3
$patterns = array(
'/(19|20)(d{2})-(d{1,2})-(d{1,2})/',
'/^s*{(w+)}s*=/'
);
$replace = array(
'3/4/12',
'$1 ='
);
echo preg_replace($patterns, $replace, '{startDate} = 1999-5-27'); // $startDate = 5/27/1999
추천추천 : 61 추천 목록
번호 제목
2,885
input 입력 필드 앞뒤 공백 실시간 제거
2,884
Placeholder 포커스시 감추기
2,883
MySQL 중복된 데이터를 삭제
2,882
MySQL 중복 데이터 확인
2,881
sessionStorage.getItem 와 sessionStorage.setItem
2,880
제이쿼리 랜덤으로 배경색 변경
preg match에 관한 정규식
2,878
Stream an audio file with MediaPlayer 오디오 파일 스트리밍 하기
2,877
Audio Streaming PHP Code
2,876
PHP $ SERVER 환경 변수 정리
2,875
Vimeo (비메오) API 를 사용하여 플레이어 컨트롤하기
2,874
iframe 사용시 하단에 발생하는 공백 제거방법
2,873
아이프레임(iframe) 전체화면 가능하게 하기
2,872
부트스트랩(bootstrapk)에서 사용하는 class명 정리
2,871
부트스트랩 CSS
2,870
크롬에서 마진 조절
2,869
PHP 현재 페이지의 도메인명이나 url등의 정보 알아오기
2,868
PHP preg match all()
2,867
PHP 로 웹페이지 긁어오기 모든 방법 총정리!
2,866
[PHP] 원격지 파일 주소 노출 안하고 curl로 다운로드 받기
2,865
PHP 함수 정리
2,864
아이프레임(iframe) 비율 유지하면서 크기 조절하는 방법
2,863
PHP 배열에서 무작위로 하나 뽑아주는 array rand() 함수
2,862
PHP 정규식 정리
2,861
PHP 정규식을 활용한 태그 및 특정 문자열 제거 및 추출 방법
2,860
php 크롤링 또는 파싱 함수, 정규식 모음
2,859
제이쿼리 기본 명령어
2,858
웹페이지 가로 모드세로 모드 인식하기
2,857
모바일 웹 화면 강제 회전(가로모드 고정)
2,856
[HTML5]에서 frameset 대체 방법과 iframe 속성
목록
뮤직트로트 부산광역시 부산진구 가야동 ㅣ 개인정보취급방침
Copyright ⓒ musictrot All rights reserved.