정규 표현 식 중 하나: 정규 표현 식 로 밍
4005 단어 정규 표현 식
Perl 에 서 는 패턴 이 라 고 부 르 며 문자열 과 일치 하지 않 는 템 플 릿 입 니 다.무한 다 중 가능 한 텍스트 문자열 이 존재 하지만 하나의 패턴 으로 두 그룹 으로 깔끔하게 나 눌 수 있다 는 것 이다. 일치 하 는 문자열 과 일치 하지 않 는 문자열 이다.패턴 은 결코 인자 하고 사의 적 인 성격 이 없다. 그것 은 일치 하거나 일치 하지 않 는 다.
작업 은 간단 합 니 다. 문자열 을 보고 일치 하거나 일치 하지 않 는 지 결정 합 니 다.
2. 간단 한 모델 사용
패턴 이 일치 하 는 대상 이 $ 이면의 내용 은 패턴 을 한 쌍 의 정사 선 (/) 에 쓰 면 됩 니 다. 다음 과 같 습 니 다.
$_="yabba dabba doo";
if(/abba/){
print "It matched!
";}
주석: 표현 식 / abba / $이 네 글자 로 구 성 된 문자열 을 찾 습 니 다. 찾 으 면 진짜 로 돌아 갑 니 다. 몇 개 를 찾 든 간 에 if 와 while 의 조건 식 에서 볼 수 있 습 니 다.
3. 메타 문자
점 번호 (.) 는 모든 단일 문자 의 마스크 입 니 다. 줄 바 꾸 기 (\ n) 를 제외 합 니 다.예 를 들 어 / bet. y / 는 betsy, bet = y, bet. y 가 일치 하지만 bety 나 betsey 는 일치 하지 않 습 니 다.
모든 메타 문자 앞 에 반사 선 을 더 하면 메타 문자 의 특수 한 역할 을 잃 게 될 것 이다.예 를 들 어 / 3 \ \. 14159 / 에서 일치 하 는 것 은 바로 그 자체 입 니 다.
4. 간단 한 양사
*앞의 내용 과 0 번 또는 여러 번 일치 하 는 데 사용 하기;
+이전 항목 과 한 번 이상 일치 합 니 다.
?있 으 나 마 나
비고: 그것들 은 반드시 어떤 물건 을 받 아야 합 니 다.예 를 들 어 / fred \ t * barney / fred 와 barney 사이 에 여러 개의 탭 문자 가 있 는 문자열 과 일치 할 수 있 으 며, "fredbarney" (0 회) 도 포함 합 니 다.
5. 모드 그룹
괄호 () 의 역할, 모드 / fred + / 는 freddddddd 와 같은 문자열 과 일치 하지만, 모드 / (fred) + / 는 fredfredfred 와 같은 문자 와 일치 합 니 다.
() 문자열 의 재 인용 도 가능 합 니 다.
$_="abba";
if(/(.)\1/){ # 'bb' ,(.)\1 。
print "It matched same character next to itself!
"}
예: / y (...) d \ \ 1 /
비고: 이 모드 는 y 뒤의 4 개의 연속 적 인 비 리 턴 문자 와 일치 하 며, \ \ 1 은 d 문자 뒤에 4 개의 문 자 를 반복 합 니 다.
예: / y (.) (.) \ 2 \ \ 1 /
주석: 이 모드 는 'Ybba' 와 일치 합 니 다.
어떤 괄호 가 몇 번 째 그룹 인지 어떻게 구분 합 니까? 왼쪽 괄호 (괄호 포함) 의 번호 만 세면 됩 니 다.
예: / y (.) (.) \ 3 \ 2) d \ 1 /
주석: 일치 하 는 것 은 Ybba dabba 입 니 다.
$_="aa11bb"if(/(.)\111){ # aa11, , perl 111
print "It matched!
";}
use 5.010;
$_="aa11bb"if(/(.)\g{1}11){ # \g{1}, ,
print "It matched!
";}
use 5.010;
$_="aa11bb"if(/(.)\g{-1}11){ #\g{-1} , ,
print "It matched!
";}
6. 선택 일치
예: / fred | barney | betty /
비고: fred 나 barney 나 betty 를 포함 하 는 모든 문자열 과 일치 합 니 다.
예: / fred (| \ t) + barney /
비고: fred 와 barney 사이 의 빈 칸, 탭 문자 또는 두 조합 에 한 번 이상 나타 나 는 문자열 과 일치 합 니 다.
예: / fred (+ | \ t +) + barney /
비고: 중간 에 있 는 구분자 들 은 모두 빈 칸 이나 탭 문자 일 것 입 니 다. 즉, free d 와 Barney 사이 의 구분자 들 은 똑 같 아야 합 니 다.
예: / fred (and | or) barney /
비고: fred and barney 나 fred or barney 를 포함 하 는 모든 문자열 과 일치 할 수 있 습 니 다.
7. 문자 집합
나타 날 수 있 는 문자열 집합 을 말 합 니 다. 마 운 트 해제 자 괄호 ([]) 를 통 해 표시 합 니 다. 단일 문자 만 일치 하지만 문자 집합 에 표 시 된 모든 것 일 수 있 습 니 다.
예: [abcwxyz]
주석: 이 7 글자 중 하나 와 일치 합 니 다. 하이픈 - 을 사용 하면 [a - cw - z] 로 같은 효 과 를 얻 을 수 있 습 니 다.
예: [a - zA - Z]
주석: 52 개의 자모 중 하나 와 일치 합 니 다.
예: [\ 000 - \ 177]
주석: 7 자리 ASCII 문자 와 일치 합 니 다.
시작 에 탈 문자 ^ 이 문자 들 을 제외 합 니 다:
예: [^ def]
주석: 이 세 글 자 를 제외 한 모든 문자 와 일치 합 니 다.
예: [^ n \ - z]
주석: n, 하이픈, z 이외 의 모든 문자 와 일치 합 니 다. 이 하이픈 은 문자 집합 에 특별한 의 미 를 가지 기 때문에 역 사선 을 추가 해 야 합 니 다. 단, / HAL - [0 - 9] + / 의 첫 번 째 하이픈 은 역 사선 이 필요 하지 않 습 니 다. 괄호 이외 의 하이픈 은 특별한 의미 가 없 기 때 문 입 니 다.
8. 상용 문자 집합 약자
임의의 숫자의 문자 집합 [0 - 9] = \ d.
단어 문 자 는 알파벳, 숫자, 밑줄 [A - Za - z0 - 9] = \ \ w (Perl 에 있 는 단어 에는 알파벳, 숫자, 밑줄 만 포함 되 어야 합 니 다) 를 포함 합 니 다.
\ w 는 단어 와 일치 하지 않 습 니 다. 단어 문자 집합 에 있 는 한 글자 만 일치 합 니 다.
예: / fred \ w + barney /
비고: fred, 빈 칸, 단어 에 맞 게 빈 칸 과 barney 를 연결 합 니 다.
\ s 줄 임 말 은 공백 을 처리 하 는 데 뛰어나다.
비 숫자: [^ \ d] = \ D
단어: [^ \ w] = \ W
비 공백 문자: [^ \ s] = \ S
/ [\ dA - Fa - f] + / 16 진수 와 일치 하 는 데 사용 할 수 있 습 니 다.
[\ d \ \ D] 는 모든 숫자 와 비 숫자 를 표시 합 니 다. 모든 문자 와 일치 합 니 다. (줄 바 꿈 포함)
[^ \ d \ D] 아무것도 안 어 울 려 요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
awk 상용 명령awk 는 모든 입력 줄 을 하나의 기록 으로 인식 하고 그 줄 의 모든 단어 도 메 인 을 하나의 필드 로 인식 합 니 다. ARGC 명령 줄 에 awk 스 크 립 트 가 들 어 오 는 매개...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.