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 )
학습 총결산
규칙적인 표현을 잘 배우는 것은 하루아침에 할 일이 아니라 이런 기본적인 요소들을 잘 파악해야 한다.양어, 메타문자, 수식자 하나하나를 소홀히 할 수 없고, 조합해서 사용하고, 많이 연습해야 숙달할 수 있다
'개발 꿀팁 > PHP' 카테고리의 다른 글
php: // filter의 묘사에 대해 이야기하다 (0) | 2022.07.04 |
---|---|
docker nginx+php 다양한 피트 설정 (0) | 2022.07.02 |
phpqrcode를 사용하여 QR코드 생성 (0) | 2022.07.02 |
php로 헤더 정보 가져오기 (0) | 2022.07.02 |
apache는 php 파일을 구문 분석할 수 없습니다. php 소스를 표시하거나 파일을 직접 다운로드합니다. (0) | 2022.07.02 |