내 눈 에 보 이 는 정규 표현 식 (입문)
정칙 을 접 한 지 3 년 이 넘 었 을 것 이다. 나 도 내 가 어떻게 정칙 을 두려워 하 는 시 기 를 보 냈 는 지 모 르 겠 고 작은 동네 에서 정칙 강자 가 되 었 다.
오늘 은 제 가 정규 에 대한 이 해 를 바탕 으로 제 눈 에 보 이 는 정규 를 간단하게 묘사 하고 정규 신인 들 이 정규 에 대한 두려움 을 없 앨 수 있 기 를 바 랍 니 다.
먼저 요약 하고 정규 3 단 논 법:
정박지
1. 입문: 정규 문 자 는 정규 문자 에 대해 많은 글 을 말 할 수 있 습 니 다. 무려 한 편의 글 이 있어 야 설명 할 수 있 습 니 다. 저 는 여기 서 말 을 많이 하지 않 습 니 다. 저 에 게 평소에 자주 사용 하 는 것 은 다음 과 같 습 니 다.
.
줄 을 바 꾸 는 임의의 문 자 를 포함 하지 않 고 phop 의 s 수정자 아래 줄 을 바 꿀 수 있 습 니 다. 예 를 들 어 $pattern='#<div>(.*?)</div>#s';
div 내용 과 줄 을 바 꾸 는 데 이 터 를 일치 시 킬 수 있 습 니 다.\s
스페이스 바, tab *
0 개 이상 일치 +
하나 이상 일치 하 는 것, 즉 하나 이상 \
전의 \
를 붙 이면 전 의 를 나타 내 고 이 를 일반 문자 로 사용 하 는 것 을 설명 한다.[]
한 글자 로 하 나 를 가 져 옵 니 다. 예 를 들 어 [abc] 가 일치 합 니 다 a b c
[]
에 ^
를 더 하면 이 문 자 를 제외 하 는 것 이 된다. 예 를 들 어 [^abc]
는 a、 b、 c
을 나타 낸다. 또한 []
에서 사용 할 수 있다 -
는 하나의 범 위 를 나타 낸다. 예 를 들 어 [0-9]
는 0 에서 9 까지 비슷 한 것 은 [a-zA-Z]
도 있다. -
문 자 를 포함 하려 면 전의 [\-]
를 붙 일 수 있다.^
문자열 시작 []
에 사 용 된 ^
과 같은 문자 이지 만 같은 뜻 이 아 닙 니 다. 여기 서 전체 문자열 의 시작 을 나타 냅 니 다. 예 를 들 어 ^www
은 www
로 시작 하 는 문자열 을 표시 합 니 다. 구분 에 주의 하 세 요. []
에 없 는 것 은 시작 문자 입 니 다. 안에서 제외 합 니 다.$
문자열 끝 {1,3}
순환 횟수 [0-9]{1,3}
는 0 - 9 범위 내 에서 1 개, 2 개 또는 3 개 를 순환 한 결과 5, 20, 415 등 ?
두 가지 용법 (1) 이 하나 또는 0 개 와 일치 합 니 다. 예 를 들 어 https?
이 일치 하 는 https
(하나 s) 또는 http (0 개 s) (2) 비 탐욕 모드 <div>
a
</div>
<div>
b
</div>
사용
<div>(.*?)</div>
하면 2 개의 결 과 를 얻 을 수 있 습 니 다.<div>
a
</div>
화해시키다
<div>
b
</div>
첫 번 째
</div>
를 만나면 비 탐욕 모델 은 더 이상 찾 지 않 기 때문이다.<div>(.*)</div>
(탐욕 모드) 를 사용 하면 전체 문자열 을 얻 을 수 있 습 니 다.<div>
a
</div>
<div>
b
</div>
뒤쪽 에서 찾 을 수 없 을 때 까지 모든 문자 와 일치 하기 때 문 입 니 다
</div>
.|
여러 데이터 중 하 나 를 선택 하 십시오 (다 중 문자 에 자주 사용) 앞에서 언급 한 []
안의 문 자 는 하나의 문자 기능 을 선택 합 니 다. 그러나 하나의 문자 가 아니라면 http | ftp | svn 은 |
으로 나 누 어야 합 니 다. |
의 역할 도 메 인 은 괄호 를 만 날 때 까지 계속 뒤로 갑 니 다. 예 를 들 어 소스 문자열 http abc
ftp abc
svn abc
http|ftp|svn abc
일치 하 는 결 과 는:http
화해시키다
ftp
화해시키다
svn abc
일치
http abc
와 ftp abc
와 svn abc
를 일치 시 키 려 면 괄호 로 앞의 협 의 를 묶 어야 한다. 예 를 들 어 (http|ftp|svn) abc
는 기대 하 는 결 과 를 얻 을 수 있다.()
데이터 분계 와 데이터 추출 (http|ftp|svn) abc
는 데이터 분계 의 예 이다. 그 다음 에 일치 하 는 결 과 는 하나의 [1]
부분 집합 데 이 터 를 얻 을 수 있다. 여기 가 바로 서브 모델 의 개념 이 고 서브 모델 을 이용 하여 추출 하고 자 하 는 데 이 터 를 얻 을 수 있다.하위 모드 1, 2, 3 의 계산 방법 은 왼쪽 괄호 의 계산 이다. 왼쪽 에서 오른쪽으로 1 부터 시작한다. 예 를 들 어 (http|ftp|svn)://([^/]+)
, [1]
에서 얻 은 것 은 (http|ftp|svn)
안의 데이터 이 고 [2]
에서 얻 은 것 은 ([^/]+)
안의 데 이 터 를 괄호 안에 넣 는 것 도 왼쪽 괄호 를 찍 으 면 된다.(?:)
비 포획 팀 은 ()
하위 모델 로 서 그 안의 데 이 터 를 얻 을 수 있다 고 말 했다. 그러나 어떤 때 는 ()
데이터 분계 기능 일 뿐 꺼 낼 필요 가 없다. 이 럴 때 비 포획 팀 의 개념 을 사용 해 야 한다.예 를 들 어 (http|ftp|svn)://([^/]+)
도 메 인 이름, 즉 [2]
만 얻 으 려 면 (http|ftp|svn)
데이터 분계 의 기능 일 뿐 여 기 는 캡 처 할 필요 가 없 기 때문에 비 캡 처 그룹 기능 을 사용 하고 (?:http|ftp|svn)
이 부분의 데 이 터 를 차단 하여 얻 으 려 면 (?:
이 왼쪽 괄호 는 [1]
, [2]
계수, 즉 (?:http|ftp|svn)://([^/]+)
중의 ([^/]+)
가 [1]
로 바 뀌 어야 한다.됐어.상용 문자 의 사용 차이 가 많 지 않 습 니 다. 그리고 더 많은 것 은 정규 표현 식 30 분 입문 튜 토리 얼 을 참고 하 십시오. 이것 은 제 가 비교적 전면적 인 정규 입문 자 료 를 본 것 입 니 다.
2. 조작: 정박 점 의 모든 정규 가 목적 성 이 있 고 이렇게 해 야 의미 가 있다.따라서 정규 를 쓰기 전에 분석 하고 자 하 는 데 이 터 를 관찰 하고 유일한 닻 점 을 찾 으 세 요. 예 를 들 어 한 페이지 의 title 라벨 을 분석 하고 title 내용 을 얻 으 려 면 이 title 이 닻 점 입 니 다.때때로 추출 하고 자 하 는 데 이 터 는 확실히 유일한 닻 점 을 찾 을 수 없다. 그러면 데 이 터 를 분해 할 수 있다. 먼저 유일한 닻 점 을 통 해 데이터 블록 을 잠 그 고 추출 한 후에 이 데이터 블록 에 대해 데 이 터 를 추출 하면 된다.예 를 들 어 원본 문자열 이 있 습 니 다.
<div id="module_1">
<div class="content">
content 1
</div>
</div>
<div id="module_2">
<div class="content">
content 2
</div>
</div>
class = "content" 를 통 해 데 이 터 를 직접 일치 시 키 면 분명히 두 개 를 얻 을 수 있 습 니 다. 그러면 데이터 필드 를 확장 할 수 있 습 니 다. 먼저 id = "module 1" 을 닻 점 으로 하여 전 체 를 가 져 올 수 있 습 니 다.
<div id="module_1">
<div class="content">
content 1
</div>
</div>
그리고 이 데이터 블록 에 대한 데이터 처 리 를 통 해 class = "contents" 의 내용 을 얻 으 면 됩 니 다.따라서 여기에 두 개의 정규 가 사용 된다.
(1)
<div id="module_1">(.*?)</div>\s*<div id="module_2">
(2) <div class="content">(.*?)</div>
요약: 닻 점 은 당신 의 데 이 터 를 유일 하 게 찾 을 수 있 는 표지 입 니 다.
3. 조작: 소음 제거 란 소음 제거 라 는 것 은 무관 한 것 을 모두 뜬구름 으로 생각 하고 마스크 로 그것 을 넘 기 며 우리 가 원 하 는 데이터 에 만 관심 을 가 지 는 것 이다. 예 를 들 어
<meta content="text/html; charset=utf-8" http-equiv="content-type">
여기 서 문자 집합 utf - 8 을 얻 으 려 면 어떻게 해 야 합 니까?우선, 포 지 셔 닝 닻 점 은 <meta
, charset=
과 utf - 8 뒤의 "
이 있 고, 나머지 는 모두 뜬구름 입 니 다 ~ 따라서 정규 <meta[^>]*charset=([^"]+)"
를 얻 으 면 됩 니 다. 서브 모드 로 데 이 터 를 얻 으 면 [1]
utf - 8 을 얻 을 수 있 습 니 다.결론: 관심 의 남 는 것, 관심 없 는 것 은 모두 뜬구름 이다.
4. 조작: 데 이 터 를 추출 하 는 것 은 데 이 터 를 얻 는 것 에 관 한 것 이다. 위의 큰 편 에서 여러분 들 은 개념 이 있어 야 한다. 바로 서브 모델 을 이용 하여 얻 는 것 이다. 여기 서 더 이상 군말 하지 않 는 다.
요약: 하위 모드 계수, 왼쪽 괄호 는 1 부터 비 포획 그룹의 왼쪽 괄호 를 제외 합 니 다.
마지막 으로 여러분 들 이 즐 거 운 정규 여행 을 하 시 기 를 바 랍 니 다. 당신 은 반드시 그녀 를 사랑 하 게 될 것 입 니 다. 저 와 마찬가지 입 니 다.:)
Zjmainstay 학습 노트 내 눈 에 정규 표현 식 발표
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.