개발 꿀팁/PHP

PHP 정규 표현식

Jammie 2022. 7. 2. 17:05
반응형

1. 정규 표현식 문법 (Perl 스타일)
1. 패턴 규칙
  /php/ 문자열 앞뒤에 비스듬히 두 개줄을 그으면 된다

2.정합함수
   preg_match('/ph)p/', php)
  인자 1 모드
  인자2 문자열

2. 정규 표현식의 요소
소개하다.
  1. 정규 표현식에는 세 가지 요소가 각각 포함되어 있습니다.예: 양어, 메타 문자, 수식자
  2, 선두 문자열: 기호 앞에 있는 문자열입니다.개별 문자나 문자열

계량어

계량어 설명
+ 하나 이상의 선행 문자열을 입력하십시오
* 0개 이상의 선행 문자열을 포함하는 것과 일치
? 0이나 1개의 선행 문자열을 포함하는 문자열과 일치
. 문자열 일치
{x}이( 가) x개의 선두 문자열과 일치함
{x, y} 은( 는) x에서 y로 시작하는 모든 문자와 일치합니다.꿰다
최소 x개의 선행 문자열을 포함하는 {x,}과( 과) 일치
^ 문자열의 첫 번째 줄과 일치
$ 문자열의 끝 부분과 일치
| 문자열의 왼쪽이나 오른쪽과 일치하는 선택기
() 그룹화, 추출

	//계량어
	//preg_match()함수 일치가 성공적으로 1을 반환했습니다. 실패는 0을 반환했습니다
	echo preg_match('/a+/','abc');//되돌아가다1
	echo preg_match('/a*/','abc');//되돌아가다1
	echo preg_match('/a?/','abc');//되돌아가다1
	echo preg_match('/./','abc');//되돌아가다1
	echo preg_match('/a{2}/','aabc');//되돌아가다1
	echo preg_match('/a{2,5}/','aaabc');//되돌아가다1
	echo preg_match('/a{2,}/','aaaaabc');//되돌아가다1
	echo preg_match('/^a/','bac');//되돌아가다0
	echo preg_match('/^a/','abc');//되돌아가다1
	echo preg_match('/a$/','abc');//되돌아가다0
	echo preg_match('/a$/','cba');//되돌아가다1
	echo preg_match('/a|b/','a');//되돌아가다1
	echo preg_match('/a|b/','b');//되돌아가다1
	echo preg_match('/(abc)+/','abcd');//되돌아가다1

메타 문자

메타 문자 설명
[a-z] 소문자 a-z를 포함하는 문자열과 일치시킵니다
[A-Z] 대문자로 A-Z를 포함하는 문자열과 일치시킵니다
[0-9] 0-9를 포함하는 문자열과 일치시킵니다
[abc] 소문자 a, b, c를 포함하는 모든 문자열과 일치합니다.
[^abc] 소문자 a, b, c를 포함하지 않는 문자열과 일치합니다
[a-zA-Z0-9_] a-zA-Z0-9와 밑줄을 포함한 모든 것을 매치합니다.선 문자열
\w a-zA-Z0-9와 밑줄을 포함하는 모든 문자열과 일치
\ W a-zA-Z0-9와 밑줄을 포함하지 않는 문자열과 일치
\d 숫자 포함 문자 일치
\ D 숫자 이외의 문자 일치
\s 공백 문자 일치
\ S 공백이 아닌 문자 일치
\b 단어 경계에 도달했는지 여부 일치
\B 일치하는 단어가 단어 경계에 도달하지 못했습니다.
\ 정규의 특수 문자 일치

	//元字符
	echo preg_match('/[a-z]/','abc');//되돌아가다1
	echo preg_match('/[A-Z]/','ABC');//되돌아가다1
	echo preg_match('/[0-9]/','123');//되돌아가다1
	echo preg_match('/[abc]/', 'a');//되돌아가다1
	echo preg_match('/[^abc]/', 'd');//되돌아가다1
	echo preg_match('/[a-zA-Z0-9_]/', 'aD45_');//되돌아가다1
	echo preg_match('/\w/', 'aD45_');//되돌아가다1
	echo preg_match('/\W/', 'aD45_');//되돌아가다0
	echo preg_match('/\d/', '123456');//되돌아가다1
	echo preg_match('/\D/', '123456');//되돌아가다0
	echo preg_match('/\d/', '123456');//되돌아가다1
	echo preg_match('/\s/', ' ');//되돌아가다1
	echo preg_match('/\S/', ' ');//되돌아가다0
	//단어 끝 경계
	echo preg_match('/at\b/', 'cat');//되돌아가다1
	//머리말 부분 경계
	echo preg_match('/\bat/', 'attribute');//되돌아가다1
	//경계에 도달하지 못했습니다
	echo preg_match('/\Bat/', 'attribute');//되돌아가다0
	//특수 문자$ ^ * () + = {} [] | \\ : <>
	echo preg_match('/\$/', '$');//되돌아가다1

수식자

수식자 설명
i 대소문자를 전혀 구분하지 않음
m은 여러 줄의 식별을 채용할 수 있으며, 행을 바꾸면 승인한다.일치 규칙
x 규칙 패턴의 공백 문자를 무시합니다
A 처음부터 일치하도록 강제하기
U 욕심쟁이 매칭 금지, 가장 가까운 것만 추적문자 일치하고 끝내기

	//수식자
	
	//i 대소문자를 구분하지 않음
	echo preg_match('/abcd/','AbcD');//0을( 를) 되돌립니다
	echo preg_match('/abcd/i','AbcD');//1 되돌아가다

 	//m 다행식별
 	$str = '1a
1a';
	preg_match_all('/^1a/',$str,$arr);
	print_r($arr);
	//결과는Array ( [0] => Array ( [0] => 1a ) )
	//기본적으로 처음부터 끝까지 일치하므로, 하나만 일치합니다

	preg_match_all('/^1a/m',$str,$arr);//1 되돌아가다
	print_r($arr);
	//결과는Array ( [0] => Array ( [0] => 1a [1] => 1a ) )
	//각 행마다 규칙을 적용하므로 두 줄까지 일치시키고, 두 번째 행 앞에 공간이 없도록 주의하여 간섭을 피한다
	//x 패턴의 공백 무시하기
	echo preg_match('/a b/','ab');//0을( 를) 반환합니다.
	echo preg_match('/a b/x','ab');//1 되돌아가다

	//A 시작 일치 강제
	echo preg_match('/ab/','catabc');//1 되돌아가다
	echo preg_match('/ab/A','catabc');//0을( 를) 반환합니다.
	echo preg_match('/ab/A','abcdef');//1 되돌아가다

	//U 욕심 매칭 금지
	preg_match_all('/php\w+php/','php123phpphp456php',$arr);
	print_r($arr);
	//결과는Array ( [0] => Array ( [0] => php123phpphp456php ) )

 	preg_match_all('/php\w+php/U','php123phpphp456php',$arr);
	print_r($arr);
	//결과는Array ( [0] => Array ( [0] => php123php [1] => php456php ) )
	//욕심쟁이 매칭 금지 후 가까운 매칭

3. 펄 스타일 함수
1,preg_grep()
  배열의 모든 메타 검색소, 패턴과 일치하는 문자를 반환합니다.직렬 배열

2,preg_match()
  검색 모드, 일치 반환true, 불일치 fals 반환E

3.preg_match_all()
  문자열 일치 모드모든 것이 나타나고 모든 것이 일치합니다.배열에 부분 삽입

4. preg_quote()
  특수 문자 정의하기
  특수 문자 포함 $ ^ * () + = {} [] | \ : <>
  경계를 정해서 규칙을 정하고, 하나하나에 있다.정규 표현식 문법에 특수성이 있다의미 문자 앞에 백슬래시를 삽입합니다

5,preg_replace()
  모든 바꾸기 모드 보이기그리고 원하는 문자열로 대체하여 돌아가기나오다.

6,preg_split()
  대소문자를 구분하지 않고 글자를 쓰다문자열은 다른 요소를 구분합니다.

	//스타일 함수
	//preg_grep()
	$arr = array('php5','php6','php7','css','html');
	$out = preg_grep('/php[0-9]/', $arr);
	print_r($out);
	//결과는Array ( [0] => php5 [1] => php6 [2] => php7 )

	//preg_match()
	echo preg_match('/php[0-9]/','php5');//1로 돌아가기
	
	//preg_match_all()
	preg_match_all('/php[0-9]/','php5php6php7',$arr);
	print_r($arr);
	//결과는Array ( [0] => Array ( [0] => php5 [1] => php6 [2] => php7 ) )

	//preg_quote()
	echo preg_quote(' $ ^ * () + = {} [] | \\ : <>');
	//결과는\$ \^ \* \(\) \+ \= \{\} \[\] \| \\ \: \<\>
	
	//preg_replace()
	echo preg_replace('/php/','python', 'php1php2php3');
	//결과는 python1python2python3

	//preg_split()
	$str = preg_split('/a/', 'cbabc');
	print_r($str);
	//결과는rray ( [0] => cb [1] => bc )

                                                             학습 총결산 

규칙적인 표현을 잘 배우는 것은 하루아침에 할 일이 아니라 이런 기본적인 요소들을 잘 파악해야 한다.양어, 메타문자, 수식자 하나하나를 소홀히 할 수 없고, 조합해서 사용하고, 많이 연습해야 숙달할 수 있다

반응형