정규식(정규식)은 문자열 일치 패턴을 설명하며, 이는 문자열에 특정 하위 문자열이 포함되어 있는지 확인하거나, 일치하는 하위 문자열을 바꾸거나, 특정 문자열 대기에서 특정 조건을 충족하는 하위 문자열을 추출하는 데 사용할 수 있습니다.
Perl 언어의 정규식 기능은 매우 강력하며, 기본적으로 일반적으로 사용되는 언어 중에서 가장 강력합니다. 많은 언어에서 정규식 지원을 설계할 때 Perl의 정규식을 참조합니다.
Perl 정규식의 세 가지 형태는 일치, 대체 및 변환입니다.
경기: m/
교체: s/
전환: tr/
이 세 가지 형식은 일반적으로 =~ 또는 !~ 와 함께 사용됩니다. =~는 일치를 의미하고, !~는 일치하지 않음을 의미합니다.
일치 연산자 m//는 문자열 문이나 정규 표현식을 일치시키는 데 사용됩니다. 예를 들어 스칼라 $bar에서 "run"을 일치시키려면 코드는 다음과 같습니다.
위 프로그램을 실행하면 출력 결과는 다음과 같습니다.
첫 번째 경기 두 번째 경기
패턴 일치에는 다음 표에 표시된 것처럼 일반적으로 사용되는 몇 가지 수정자가 있습니다.
수정자 | 설명하다 |
---|---|
나 | 패턴에서 대소문자 무시 |
중 | 여러 줄 모드 |
영형 | 값은 한 번만 할당하세요. |
에스 | 단일 라인 모드, "."는 "n"과 일치합니다(기본값은 일치하지 않음). |
엑스 | 패턴에서 공백 무시 |
g | 글로벌 매치 |
cg | 전역 일치가 실패하면 일치하는 문자열을 다시 검색할 수 있습니다. |
Perl이 처리된 후에는 일치하는 값에 대해 세 가지 특수 변수 이름이 생성됩니다.
$`: 일치하는 문자열의 이전 부분
$&: 일치하는 문자열
$': 아직 일치하는 문자열이 남아 있지 않습니다.
이 세 가지 변수를 함께 사용하면 원래 문자열을 얻게 됩니다.
예는 다음과 같습니다:
위 프로그램을 실행한 결과는 다음과 같습니다.
일치 전 문자열: 일치 전 문자열에 오신 것을 환영합니다: 일치 후 문자열 실행: oob 사이트.
대체 연산자 s///는 일치 연산자의 확장이며 지정된 문자열을 새 문자열로 바꿉니다. 기본 형식은 다음과 같습니다.
s/패턴/교체/;
PATTERN은 일치하는 패턴이고 REPLACEMENT는 대체 문자열입니다.
예를 들어 다음 문자열의 "google"을 "codercto"로 바꿉니다.
위 프로그램을 실행한 결과는 다음과 같습니다.
codercto 사이트에 오신 것을 환영합니다.
대체 작업 수정자는 다음 표에 나와 있습니다.
수정자 | 설명하다 |
---|---|
나 | "i"가 수정자에 추가되면 정규식은 대소문자 구분을 취소합니다. 즉, "a"와 "A"는 동일합니다. |
중 | 기본 일반 시작 "^" 및 끝 "$"는 일반 문자열에만 적용됩니다. "m"이 수정자에 추가되면 시작과 끝은 문자열의 각 줄을 참조합니다. 각 줄의 시작은 "^"입니다. ", "$"로 끝납니다. |
영형 | 표현식은 한 번만 실행됩니다. |
에스 | "s"가 수정자에 추가되면 개행 문자 이외의 문자를 나타내는 기본 "."은 개행 문자를 포함한 모든 문자가 됩니다! |
엑스 | 이 수정자를 추가하면 표현식의 공백 문자가 이스케이프되지 않는 한 무시됩니다. |
g | 일치하는 문자열을 모두 바꿉니다. |
이자형 | 문자열을 표현식으로 바꾸기 |
변환 연산자와 관련된 수정자는 다음과 같습니다.
수정자 | 설명하다 |
---|---|
기음 | 지정되지 않은 모든 문자를 변환합니다. |
디 | 지정된 문자 모두 삭제 |
에스 | 여러 개의 동일한 출력 문자를 하나로 압축합니다. |
다음 예에서는 $string 변수의 모든 소문자를 대문자로 변환합니다.
#!/usr/bin/perl $string = 'codercto 사이트에 오신 것을 환영합니다.';$string =~ tr/az/Az/;print "$stringn";
위 프로그램을 실행한 결과는 다음과 같습니다.
CODRCTO 사이트에 오신 것을 환영합니다.
다음 예에서는 /s를 사용하여 $string 변수에서 반복되는 문자를 제거합니다.
위 프로그램을 실행한 결과는 다음과 같습니다.
루놉
더 많은 예:
$string =~ tr/d/ /c; # 숫자가 아닌 모든 문자를 공백으로 대체 $string =~ tr/t //d # 탭과 공백 삭제 $string =~ tr/0-9/ /cs # 숫자 사이의 다른 문자를 공백으로 바꿉니다.
표현 | 설명하다 |
---|---|
. | 개행 문자를 제외한 모든 문자와 일치합니다. |
엑스? | x 문자열 0 또는 한 번 일치 |
엑스* | x 문자열을 0회 이상 일치하지만 가능한 최소 횟수와 일치합니다. |
엑스+ | x 문자열을 1회 이상 일치하지만 가능한 최소 횟수와 일치합니다. |
.* | 모든 문자와 0회 이상 일치 |
.+ | 임의의 문자와 1회 이상 일치 |
{중} | m개의 지정된 문자열과 정확하게 일치합니다. |
{m,n} | m보다 크고 n보다 작은 지정된 문자열과 일치합니다. |
{중,} | m개 이상의 지정된 문자열과 일치 |
[] | [] 내의 문자와 일치합니다. |
[^] | []와 일치하지 않는 문자와 일치합니다. |
[0-9] | 모든 숫자와 일치합니다. |
[아즈] | 모든 소문자 알파벳 문자와 일치합니다. |
[^0-9] | 숫자가 아닌 모든 문자와 일치합니다. |
[^az] | 소문자 이외의 모든 알파벳 문자와 일치합니다. |
^ | 다음으로 시작하는 문자와 일치합니다. |
$ | 문자 끝의 문자와 일치합니다. |
디 | 숫자 문자와 일치하며 [0-9]와 동일한 구문입니다. |
d+ | 여러 숫자 문자열과 일치하며 [0-9]+와 동일한 구문입니다. |
디 | 숫자가 아님, 다른 것과 동일d |
D+ | 숫자가 아님, 다른 경우에는 d+와 동일 |
w | 영문자 또는 숫자로 구성된 문자열, [a-zA-Z0-9_]와 동일한 문법 |
w+ | [a-zA-Z0-9_]+와 동일한 구문 |
W | 영어가 아닌 문자 또는 숫자의 문자열, [^a-zA-Z0-9_]와 동일한 구문 |
W+ | [^a-zA-Z0-9_]+와 동일한 구문 |
에스 | 공백, [ntrf]와 동일한 구문 |
s+ | [ntrf]+와 동일 |
에스 | 공백 없음, [^ntrf]와 동일한 구문 |
S+ | [^ntrf]+와 동일한 구문 |
비 | 영문자와 숫자로 묶인 문자열 일치 |
비 | 영문자나 숫자값으로 제한되지 않는 문자열과 일치 |
a|b|c | 문자, b 문자 또는 c 문자와 일치하는 문자열과 일치합니다. |
알파벳 | abc()가 포함된 문자열(패턴)과 일치합니다. 이 기호는 발견된 문자열을 기억합니다. 이는 매우 실용적인 구문입니다. 첫 번째()에서 찾은 문자열은 $1 변수 또는 1 변수가 되고, 두 번째()에서 찾은 문자열은 됩니다. $2 변수나 2 변수 등이 됩니다. |
/패턴/i | i 이 파라미터는 영문 대소문자를 무시한다는 의미입니다. 즉, 문자열 매칭 시 영문 대소문자 문제를 고려하지 않는다는 의미입니다. 패턴 모드에서 "*"와 같은 특수 문자를 찾으려면 이 앞에 추가해야 합니다. 문자 특수 문자를 무효화하려면 기호를 사용하십시오. |