생활코딩 PHP - 정규표현식 검색 > PHP

PHP

PHP Web Programming 강의 리스트

생활코딩 | PHP - 정규표현식 검색

본문

※ 영상을 선명하게 보기 안내
  1. 유튜브 영상에서 오른쪽하단에 톱니바퀴를 클릭합니다.
  2. 팝업목록에서 "품질" 선택하세요.
  3. 원하는 해상도를 선택해주세요.
※ 모바일에서 Wifi가 아니라면 데이타가 소진될 수 있으니 주의바랍니다.
생활코딩님의 PHP강의 청각장애인을 위한 자막
15444116046746.jpg

 자 이번에 살펴볼 예제는 이 정규 표현식 에서

어 자 워드 바운더리 즉 단어의 경계 라는 뜻을 의미하는 워드 바운더리
패턴을 이용해서 이 php 라고 하는 어
어떤 문자에서 어떠한 텍스트를 검사하는 예제를 살펴보겠습니다
자 만약에 여러분이 여기에 있는 요 문자 해서 이 웹 이라고 하는 단어를
검색하고 싶은데 이 단어가 이 단어가
다른 단어와 결합되어 있지 않고 예처럼 얜 결합되어 잇죠 웹 사이트 라고
딱 웹 이라고 하는 독립되어 있는
예 혼자서 있는 웹 이라는 단어만 에 검색하고 싶다 라고 하면 정규표현식
으로
여기 있는 요 슬레 격 쓸래 시
그리고 비 그리고 역시 레시피 이라는 것을 사용하게 되면 이것은 그
경계에 단어의 경계를 나타내는 것이기 때문에 이 웹 이라고 하는 요 단어
앞에 어
다른 문자가 붙어 있지도 않고 이 뒤에도 다른 문자가 붙어 있지 않은
텍스트를 검색한 단 뜻입니다
자 그 검색 결과는 요놈이 줘 그렇기 때문에
요 텍스트 가 존재하기 때문에 잎이 레그 매체의 리턴 값은 1이 되면서
어매 치어스 파운드가 화면에 출력될 겁니다 자 반대로 똑같은 패턴인데
자 여기 있는 요 텍스트는 어떤가요 현재 웹 사이트 라는 텍스트를 갖고
있습니다
작은데 이 웹 사이트 라고 하는 이 텍스트는
자 앞쪽에는 단어의 경계 줘
그런데 이 웹 이라고 하는 텍스트 가 끝나는 지점은 사이트 라고 하는
것이 결합되어 있기 때문에 이것은 단어의 경계를 갖고 있지 못합니다
그렇기 때문에 이 웹 사이트 라고 하는 요것은
이 웹 이라고 하는 것과 단어 자체는 일치하지만 예 앞쪽에 인 이 뒤쪽에
있는 뒤쪽에 있는 워드 바운더리
를 의미하는 요 패턴 때문에
예 여기에서 찾을 수 없는 텍스트 가 됩니다
자 그럼 필에 그 맺히는 영을 l 내질 턴 하게 되고
0을 리턴하게 되면 엄마의 치워 스나 파운드 라고 하는 값이 화면에
출력될 겁니다 여러분이 직접 한번 테스트를 해 보시길 바래요
자 이번엔 조금 새로운 예제를 살펴보죠
자 우선 이 서브젝트 라는 변수에 다가 제가 요렇게 생긴 내용을
예다 왔습니다 그리고 그 내용이 자연스럽게
여기에 들어가게 되서 제가 여기에 아직은 정규표현식을 적지 않았는데
여기에다가 제가 적게 되는 정규 표현식에 식으로
요 안에 있는 내용을 검색할 겁니다 그런 여기까진 똑같은데
자 여기 매치 라고 하는 변수를 제가 세번째 인자로 전달 했어요
그리고 매치 라는 변수는 위에서 제가 선언한 적이 없습니다
여러분들이 요 세 번째 인자로 전달하는 요 변수는 이름이 꼭 매 칠
필요가 없어요
a 라도 상관이 없습니다 그리고 위에서 여러분이 따로 선언할 필요도
없어요
그럼 요렇게 그 변수에 이름만 적어 주게 되면 잎이 랙 원더 매치 라고
하는 져 함수가 내부적으로
요런 변수를 생성해서 그 변수에 다가 여러분이 검색한 결과를 채워 넣어서
리턴을 하게 됩니다
자 그럼 그것을 출력해 보면 요 배치 라는 변수에 여러분이 검색한 결과가
배열로 담겨서 출력되게 되는 거예요
자 그럼 제가 한번 여기다가 이 코딩 이라고 하는 값을 넣고 자 여기
있는걸 한번 실행을 시켜 볼게요
화면에 짧게만 들어서
자 실행을 시키면
자 이렇게 실행을 했더니 에러가 나 줘 에러가 나는 이유는 제가 여기다가
9분자를 넣지 않았기 때문이다 자 9분자를 넣고 다시 실행을 시켜 볼게요
자 그럼 어떻게 되나요
자 여기는 매치 라고 하니 변수 안에 제가 검색한 텍스트 인코딩 이란
텍스트가 이렇게 들어가 있죠
자 이걸로 별로 실용적이지 않을 수 있는데 만약에 제가 코 로 시작되는
어떠한
코디에 1 2 3 5
이렇게
c 로 시작하는 어떠한 단어들을 이렇게 검색을 했을때 그 결과가 이렇게
출력이 되게 되죠 그래서 제가 나중에
요 검색 결과 제가 입력한 값과 는 좀 다르잖아요 제가 입력한 건요 건데
검색할 건요 거잖아요
그 값에 접근할 때 여러분이 손쉽게
요렇게
그 매치 라는 배열에 첫 번째 첫 번째 원소 로 접속을 하게 되면 자
보시는 것처럼 코딩 이란 텍스트를 얻을 수 있다는 겁니다
아시겠죠 자 그런데 이걸 조금만 더 복잡하게 해볼게요
예 만약에 제가 여기 있는 요요 문석 여기 있는
요 텍스트 해서
어 도메인을 제가 추출하고 싶다
그럼 어떻게 하면 될까요 자 우선은 이렇게 9분자를 써야겠죠
그 다음에 저는 여기다가
일단 도메인 는 http 로 시작하지 않아요
http 라고 입력하고 한번 결과를 보면
자 보시는 것처럼 http 까지 잘 가져왔습니다
자 그 다음에 제가 여기다가 슬래시 / 를 하면 어떻게 되나요
자 에러가 뜨죠 언어 온 모디파이어 이해할 수 없는 그 9분 제가 나왔다
라는 뜻인데요 그것은 왜그러냐면 된다
자 여기에 있는
여기 9분 자가 있고
9 분자가 2 / 인데 저는 그 안에서 또 한번 그 9분자 해당되는 것을
패턴으로 사용했기 때문에
어 php 입장에서는
요기까지 정규표현식 이고 이 뒤에는 정규 표현식니라고 인식하는
겁니다
그래서 에러가 발생한 거에요 자 이 때 해결할 수 있는 방법 하나는 요
앞에 다가 역시 / 를 붙이는 게 한 하나의 방법이고요
역 쓰레쉬는 정규표현식 에서 이 스케이팅에 역할을 한다.는 거 아시죠
즉 이 뒤에 있는 이 문자를 아무런 역할이 없도록 한다.
그냥 단순 문자열로 만든다 그것이 바로 이 스케이팅에 역할이죠
요렇게 하거나 아니면 9분자를 다른걸 쓸 수 있다는 거죠 자 요렇게 하고
한번 볼까요 자 보시는 것처럼 http
그리고 / / 까지가 검출됐습니다 예 저까지 검색이 된거죠
작은데 open tools 라고 한 요 텍스트는
요건은
어떤 문자의 조합이 잖아요
문자의 조합 이기 때문에 제가
w 역 쓰레쉬 w 역 / w 는 문자를 의미하죠
그 다음에 여기 있는 요 문자가
역 쓰레쉬 w 는
여기 있는 하나 하나의 문자를 의미 하는 건데 여기 있는 문자가 최소
하나에서
뭐 더 많을 수 있는 거기 때문에
1 보다 많다 1 이상이다 라는 것을 의미하는 이 수량 자를 쓰면 되겠죠
그 수량 자는
+ 줘 자 그래서 요거 를 저장하고
자 브라우저에서 열어보면 open tools 까지
검색이 됐습니다 자오 오픈 튜토리얼 수 까지 됐을까요
여기 있는 점 은 요 w
즉 문자 알파벳 숫자 이런 것들
알파벳 숫자 그리고 언더 라인이죠 거기에 해당되지 않기 때문에 요기 요
앞에 까지만 검색이 된겁니다
자 그럼 저점을 수용하기 위해서 우리가 여기다가 점을 찍으면 되는데 이게
문제가 없을까요
자 살펴보죠 예 문제가 없네요
예 그런데 에러가 나지는 않고 있지만 자 여기 있는 요점은
이 정규 표현식에 서점이 의미하는 바는 애니 캐릭터 즉 어떠한 문짝 언
상관없이 요점이 위치하고 있는 것에 등장할 수 있죠
자 그런데 여기 있는 요점은 애가 점이고 얘도 문자의 이기 때문에 애가
여기에 위치하고 있는 겁니다
그런데 우리는 조금 더 강력하게 여기 있는 요점 이라고 하는 기호를 강제
하기 위해서는
요 점 을 애니 캐릭터 라고 하는 이 정규 표현식에 패턴으로
사용하는 것니라 문자의 점 으로 얘를 사용할 필요가 있습니다
자 그 때 사용할 수 있는 것이 역 쓸래 c 를 사용해서 요 점 이 애니
캐릭터로 해석되지 않도록 우리가 익숙해 이긴 처리를 해줄 수가 있는 거죠
결과는 같지만 얘 이게 더 완전한 거라고 볼 수가 있습니다
자 그 다음에 뒤에 org 가 오는데요 or 지도
문자의 조합이 고 예 최소 하나 이상의 이 문자로 이루어져 있기 때문에
w 이건 문짝 고요 그리고
+ 이렇게 하게되면 open torso 아이즈 까지 검색을 한 겁니다 자
그런데 우리가 이 정규 표현식 에서 조금 더 많은
어 정보를 추출하고 싶다 즉 이 사용자가 입력한 어떤 요요기 있네요
데이터에서
홈페이지 그리고 뭐 이거는 이메일 그리고 뒤에 있는 전화번호 요걸로
추라고 싶다고 한다.면 어떻게 하면 될까요
예 그 때 사용할 수 있는 방법이 2 캡처 링이 라고 하는건데요
어떤 데이터를 캡처할 수 있다 뭐 그렇게 이해하시면 될 것 같습니다
자 여기에서 제가 여기에 있는 http 를 과로로 한번 감싸 볼게요
자 이렇게 감쌌습니다 자 그리고
리프레쉬 를 했을 때 a 매치 안에 담겨있는 값이 어떻게 변화하는지 한번
살펴보죠
자 지금 이 상태였어요 자 그런데 제가
새로 열어 열었더니
자 내용 이렇게 바뀌었습니다
자 어때요 배열에 값이 두 개가 됐죠
자 배열에 값이 두 개가 된 이유는 지금 설명하기는 조금 어렵구요
제가 조금더 요 예제를 설명하는 과정에서 자연스럽게 왜 배열이 2개가
되었는가를 설명드릴 수가 있을 겁니다
자 그 다음에 여기 있는 요 이메일을 우리 한번 이 패턴 정규표현식 으로
한번 적어 또 가져와 보죠
자 제가 여기다가 어육 이 있는 홈페이지 주소와 이메일 주소 사이에는
공백이 있죠 그만큼 공백이 줘 그럼 공백 을 의미하는 문자인 역 쓸래
cs 를 입력합니다
자 그리고 리프레쉬 를 해보면 예
자 별 차이가 없는데요 것은 공백 때문에 그래요
자 여기에 있는 프린트 r 대신에 바 덤프로 하면
예 아 던 들어가게 되면 저 매치 라는 변수 안에 담겨 있는 데이터에
길이도 알 수가 있기 때문에 더 명확하게 지금 상황을 파악할 수가
있습니다
자 현재 우리가 검색한 있 at open torso 알지 라는 이
데이터는
예 20 내자 예 길이가 숨을 내 자 라는 뜻입니다
작은데 여기다 제가 역 슬래시 하고 s 를 붙이게 되면 자 여기 리프레쉬
했을때 제가 검색한 결과는 25자 로 바뀌었죠
요 뒤에 공백이 들어가 딴 얘기 입니다 제 공백을 은 이유는 바로 이부분
때문에 공백을 는 거예요
아시겠죠 자 그다음에 이메일 주소를 추가할 건데
자 이메일 주소를 한번 추가해 볼까요
자 이메일 주소는 역시
알파벳
문자로 시작하니까 문자 또는 숫자 또는 언더라인 그중에 하나를 것이야
이루어져 있기 때문에 이름이 이렇게 하고요
그리고
폴 뱅 일을 합니다 잘 되는지 한번 계속 확인해 봐야죠
자 여기 에러 같네요
자 제가 역시 / 대신에
지금 에러가 먼지 찾으신 분 있죠
제가 9분자 바깥쪽에 내가 저걸 썼네요
그분 제 안에다가 역설 에 시 w
그리고 골뱅이는 좀있다가 해야죠 그 다음에 요기 있는 요
잘 2
id 에 해당되는 부분을 우리가 정규표현식 으로 하려면 이 문자 까 가
하나 이상 이라는 조건을 줘야 되기 때문에 이걸 쓰면 되겠죠
자 그리고 리로드를 해보면 자 보시는 것처럼 이렇게 화면이 나옵니다
자 요렇게 요렇게 보는게 좀 더 보기 편할 것 같아서
자 화면에 좀 요걸로 바꾸겠습니다
자 지금 화면에 출력된 거 보이시죠
예 이렇게 해서 요만큼 이 검색이 된겁니다
자 그 다음에 나머지 것들도 해야죠
자 그리고 여기다가 골뱅이를 하면 자 골뱅이 까지 검색이 됐구요
그 다음에
그 도메인을 입력할 건데
요거는 아까 우리 요구 했을 때와 똑같이 사용을 하죠 자 여기 있는
내용을 카피해서
지금 제가 선택한 이 부분은 선택한 이 부분은
예 요 부분에 해당 되는 거고 요건은 도메인 이기 때문에
여기도 도메인이 들어오는 거기 때문에 이 두 가지는 같은 패턴을 쓸 수
있다는 얘기에요
그래서 저는 여기 있는 요거를 카피해서
요걸 뱅이 뒤에다가 붙이고
자 리로드를 해보면 자 보시는 것처럼 요렇게 가 패턴으로 제가 적은 찾은
겁니다
예 그래서 여기 있는 요건은 어떤 이메일 주소가 들어가도
예 패턴으로 찾을 수 있다는 거죠 그런데 한가지 지금 제가 여러분들께
설명 드리고 있는 도메인 이나 이메일에 대한 패턴은
어 완벽한 패턴닙니다 이것보다 더 복잡해 야 지 만
실제로 이메일이나 도메인을 수용할 수 있어요 지금 우리는 교육의 목적이기
때문에 아주 간단하고 현재 이 상황에서 만 사용할 수 있는 패턴을 쓰는
거라고 생각하시면 됩니다
하지만 중요한 아이디어는 또한 여기에 다 담겨 있기도 해요
자 이렇게 하고 자 여기 여기가 이제 클라이막스가 됩니다
자 여기에 있는 여기서 이메일에 해당되는 정의 부가 어디죠
자 이메일에 해당되는 부분은 자 여기 있는 0 100부터
여기 있는 9분자 사이에 2부 가니 바로 이메일에 대한 정의 부조
이정희 불을 우리가 이렇게 과로로 감싸줘 보겠읍니다
자 제가 요렇게 를
과로로 처리를 한 다음에
리프레쉬 를 하게 되면 여기 있는 배열이 어떻게 바뀌는가 를 보시면
됩니다
자 한번 해 볼게요 자 어때요
자 매치 라고 하는 이 배열에 담겨있는 값까는 두개의 값을 가지고
있었는데 지금 세계로 드러났습니다
그리고 세 번째에 배열에 값에는 예 제가 찾아낸 정규표현식을 통해서
찾아낸
이 고잉 골뱅이 이 고잉 닷컴 이라고 하는 이 주소가 들어가 있습니다
요거 제 진짜 줏어 아닙니다
자 이게 바로 이게 바로 제가 여기서 사용한
이 패턴에서
요 괄호
와 이과로 의 역할입니다
자 여기서 도 요 과로와
이 과로에 역할이
잉 거죠 그래서 자 여기 있는 요 과로로 여러분이 괄호를 이렇게 되고
과로로 이렇게 정규 표현식에 패턴을
묶어 주게 되면 묶어 주게 되면 어
그 괄호로 묶인 구간은
독립된 데이터로 우리가 추출해 낼 수 있다라는 거죠 예 그런걸 캡처 링
이라고도 하고 또는 역 참조 라는 표현을 쓰기도 합니다
자 그러면 애플리케이션 어떻게 구성할 수 있을까요
자 여기에 있는
에코 몇이 그리고 1번
자 여기에 일본이 줘
컴 페이지가
홈페이지 2
홈페이지는 쓰이 거고
페코 de beer
그리고 에코 이메일
매치 이번 이다 라고
이렇게 입력해 주게 되면 자 보시는 것처럼
한글이 깨지고 있는데 한글 깨지는 것은 중요한 게 아니죠
자 홈페이지 5
네 이제 우리는 공부를 하고 있는 중이기 때문에
자 보시는 것처럼 홈페이지는 무엇이고 이메일을 무엇이다 라고 이렇게 어떤
임의의 텍스트 에서 데이터를 추출해서 화면에 뿌려줄 수가 있게 되는
겁니다
예 자 그럼 제가 여기에 있는 주소를 자
네이버 닷컴 으로 바꾸고 이 고인 골뱅이 닷컴을 역시 네이버 닷컴 으로
바꾸고
제가 리프레쉬 를 해보면 자 보시는 것처럼 주소를 바꿔도 예 그 주소에
해당되는 데이터를 저 문자로 부터 추출할 수 있다라는 것이죠
예 그럼 제가 한가지 아직 설명되지 않은 걸 설명드리고 이번 예제는 마칠
생각인데요
자 여기 보시면 여기 보시면
자 첫 번째 배열은 첫번째 배열은
요런 데이터가 들어 있어요 길 줘
그리고 두번째 데이터는 자 첫번째 과로에 있는
여기서 얘기한 첫번째 과로는 자요 겁니다
첫번째 바로 그리고 요건 두번째 바로 인데요
요 부분은
첫번째 가로
요 부분은 두 번째
과로에 있는 내용을 추출해서 추출했다 라는 겁니다 자 그러면 도대체 여기
있는 요
처음으로 등장하는 요 값은 무엇일까요
이것은 여러분이 요 괄호 를 통해서
이렇게 캡처 링을 1
이런 것들 전체를 포함하는 여기서부터
정규 표현식이 설명하는 게 쉽지가 않습니다
자 여기서부터 요만큼 이 바로
요거 이고요 그리고
요만큼 에 과로가
바로 이거 이고요
그리고
괄호 요만큼 2
바로 요 마지막에 있는 요고 라는 것이죠
그래서 첫 번째 갑 이 매체의 담겨있는 첫 번째 값은
예 첫 번째 값은
전체 패턴
전체 패턴 으로 검출한 값이
이 첫번째 값으로 들어오고요
자 두 번째는 순서대로 첫 번째 과로에 있는 값이 이 두 번째 값이 되고
세번째 과 로이 자 두번째 가로의 있는 거 없이 두 번째 가로
두번째 값이 된다는 거죠 아이 약간 입니다

댓글 0개

등록된 댓글이 없습니다.

본 사이트의 컨텐츠는 명시적으로 공유기능을 제공하고 있는 공개된 자료를 수집하여 게시하고 있습니다.

저작권, 강의등록, 광고, 제휴등은 "관리자에게 문의"로 메세지 주시면 확인후 답변드립니다.

Menu