정규 표현식 의 줄임말, 정규식 은 텍스트를 일치시키고, 찾으며, 관리하는 데 도움이되는 패턴을 만들 수있는 텍스트 문자열입니다. Perl은 정규 표현식을 사용하는 프로그래밍 언어의 좋은 예입니다. 그러나 여러 곳 중 유일하게 정규 표현식을 찾을 수 있습니다. 정규 표현식은 명령 줄과 텍스트 편집기에서 파일 내의 텍스트를 찾을 때도 사용할 수 있습니다.
처음 정규 표현식을 이해하려고 할 때 마치 다른 언어 인 것처럼 보입니다. 그러나 정규 표현식을 마스터하면 텍스트로 작업하거나 많은 양의 데이터를 구문 분석해야하는 경우 수천 시간을 절약 할 수 있습니다. 다음은 각 구성 요소에 레이블이 지정된 정규 표현식의 예제입니다. 이 정규 표현식은이 페이지의 뒷부분에 나와있는 Perl 프로그래밍 예제에도 표시됩니다.

정규 표현식의 기본 (치트 시트)
위의 예를 보면 압도적 일 수 있습니다. 그러나 정규 표현식 명령의 기본 구문을 이해하면이 문장을 읽는 것처럼 위의 예를 읽을 수 있습니다. 불행히도 모든 프로그램, 명령 및 프로그래밍 언어가 동일한 정규식을 사용하는 것은 아니지만 모두 유사점을 공유합니다.
캐릭터 | 그것은 무엇을합니까? | 예 | 성냥 |
---|---|---|---|
^ | 행의 시작과 일치합니다. | ^ abc | abc, abcdef .., abc123 |
$ | 행의 끝과 일치합니다. | abc $ | 내 : abc, 123abc, theabc |
. | 어떤 캐릭터와도 매치 | 교류 | abc, asg, a2c |
| | OR 연산자 | abc | xyz | abc 또는 xyz |
(...) | 일치하는 항목 캡처 | (알파벳) | 'a'와 'c'캡처 |
(? : ...) | 비 포획 그룹 | (알파벳) | 'a'를 캡처하지만 'c'그룹 만 캡처합니다. |
[...] | 괄호 안에 들어있는 것과 일치합니다. | [알파벳] | a, b 또는 c |
[^ ...] | 괄호 안에 들어 있지 않은 모든 것과 일치합니다. | [^ abc] | xyz, 123, 1de |
[az] | 'a'와 'z'사이의 모든 문자와 일치합니다. | [bz] | BC, 마음, xyz |
{엑스} | 정확히 일치하는 'x'시간 | (abc) {2} | abcabc |
{엑스, } | 'x'회 이상 일치 | (abc) {2, } | abcabc, abcabcabc |
{x, y} | 'x'와 'y'시간을 일치시킵니다. | (a) {2, 4} | aa, aaa, aaaaa |
* | 욕심 많은 성냥은 * | 알파벳 | abc, abbcc, abcdc |
+ | 한 번 이상 + 문자 일치 | a + c | ac, aac, aaac, |
? | 문자 앞에? 0 번 또는 1 번. 또한 욕심이없는 경기로 사용됩니다. | 알파벳 | 교류, abc |
\ | 역 슬래시 뒤에 문자를 이스케이프하거나 이스케이프 시퀀스를 만듭니다. | \ sc | 교류 |
이스케이프 문자 (이스케이프 시퀀스)
참고 : 이스케이프 문자는 대소 문자를 구분합니다.
캐릭터 | 그것은 무엇을합니까? |
---|---|
\ | 아래에 언급되지 않은 문자는 \가 이스케이프됩니다. 예를 들어, \. 마침표와 일치하고 위에서 언급 한 기능을 수행하지 않습니다. 이스케이프해야하는 문자는 () [] {} ^ $입니다. | * +? \ |
\ 0 | Null 문자 |
\에이 | 벨이나 알람을 일치시킵니다. |
\비 | 대부분 또는 백 스페이스의 단어 경계 |
\비 | 비 단어 경계 |
\디 | 임의의 십진수와 일치 (0-9) |
\디 | 모든 비 숫자와 일치 |
\이자형 | 이스케이프 경기 |
\에프 | 양식 피드 일치 |
\엔 | 새 라인 일치 |
\ Q ... \ E | 일치되는 것에 특별한 의미를 무시합니다. |
\아르 자형 | 캐리지 리턴과 일치 |
\에스 | 공백 문자 (공백, \ t, \ r, \ n)와 일치합니다. |
\에스 | 공백이 아닌 문자와 일치합니다. |
\티 | 탭 일치 |
\V | 수직 탭 일치 |
\ w | 임의의 한 단어 문자 [a-zA-Z_0-9]와 일치합니다. |
\ W | 임의의 한 단어가 아닌 문자와 일치합니다. |
정규식 플래그
(정규 표현식의 바깥쪽에) 플래그를 사용하여 패턴 일치를 도울 수 있습니다.
캐릭터 | 그것은 무엇을합니까? |
---|---|
나는 | 대소 문자를 무시하십시오 (대소 문자 허용). |
엠 | 멀티 라인 매치 |
에스 | 새로운 행 맞추기 |
엑스 | 공백 및 주석 허용 |
일본 | 중복 된 그룹 이름 허용 |
유 | 불일치 일치 |
펄 프로그래밍 언어 정규식 예제
다음은 Perl에서 정규 표현식 및 패턴 일치의 몇 가지 예입니다. 이 예제들 중 상당수는 정규 표현식을 지원하는 다른 프로그래밍 언어 및 프로그램과 유사하거나 동일합니다.
$ data = ~ s / bad data / 좋은 데이터 / i;
위의 예는 "불량 데이터"를 대소 문자를 구분하지 않는 일치를 사용하여 "양호한 데이터"로 바꿉니다. 따라서 $ 데이터 변수가 "여기에 나쁜 데이터"인 경우 "여기 좋은 데이터입니다."가됩니다.
$ data = ~ s / a / A /;
이 예는 소문자 a 를 대문자 A로 바꿉니다. 따라서 $ 데이터가 "예"라면 "exAmple"이됩니다.
$ data = ~ s / [az] / * /;
위의 예에서는 소문자 a부터 z까지를 별표로 바꿉니다. 따라서 $ 데이터가 "예"라면 "E ******"이됩니다.
$ data = ~ s / e $ / es /;
이 예제는 문자열의 끝에있는 텍스트와 일치하는 정규식을 알려주는 $ 문자를 사용합니다. 따라서 $ 데이터가 "예제"라면 "예제"가됩니다.
$ data = ~ s /\./!/;
위의 예에서 마침표는 느낌표로 바꿉니다. \ (이스케이프)없이 마침표 만 입력하면 마침표는 메타 문자이므로 모든 문자로 처리됩니다. 이 예에서 $ data가 "example"인 경우 "예"가 될 것입니다. 그러나 탈출구가 없다면 모든 캐릭터를 대체하여 "!!!!!!!!"이됩니다.
$ data = ~ s / ^ e / E /;
마지막으로, 위의 예에서 캐럿 (^)은 정규식이 행 시작 부분에있는 항목과 일치하도록 지시합니다. 이 예제에서 이것은 줄의 시작 부분에있는 모든 소문자 e와 일치하며 대문자 E로 바꿉니다. 따라서 $ data가 "example"이면 "Example"이됩니다.
팁 : grep과 같은 명령이나 정규 표현식에서 O'Reilly 책 "정규 표현식 마스터하기"를 통해 정규 표현식을 더 많이 탐색하고자하는 경우.
컴퓨터 약어, 이스케이프 시퀀스, 표현식, 글로브, 메타 문자, 프로그래밍 용어, 물결표, 와일드 카드