Regex (정규식)이란 무엇입니까?

정규 표현식줄임말, 정규식 은 텍스트를 일치시키고, 찾으며, 관리하는 데 도움이되는 패턴을 만들 수있는 텍스트 문자열입니다. Perl은 정규 표현식을 사용하는 프로그래밍 언어의 좋은 예입니다. 그러나 여러 곳 중 유일하게 정규 표현식을 찾을 수 있습니다. 정규 표현식은 명령 줄과 텍스트 편집기에서 파일 내의 텍스트를 찾을 때도 사용할 수 있습니다.

처음 정규 표현식을 이해하려고 할 때 마치 다른 언어 인 것처럼 보입니다. 그러나 정규 표현식을 마스터하면 텍스트로 작업하거나 많은 양의 데이터를 구문 분석해야하는 경우 수천 시간을 절약 할 수 있습니다. 다음은 각 구성 요소에 레이블이 지정된 정규 표현식의 예제입니다. 이 정규 표현식은이 페이지의 뒷부분에 나와있는 Perl 프로그래밍 예제에도 표시됩니다.

정규 표현식의 기본 (치트 시트)

위의 예를 보면 압도적 일 수 있습니다. 그러나 정규 표현식 명령의 기본 구문을 이해하면이 문장을 읽는 것처럼 위의 예를 읽을 수 있습니다. 불행히도 모든 프로그램, 명령 및 프로그래밍 언어가 동일한 정규식을 사용하는 것은 아니지만 모두 유사점을 공유합니다.

캐릭터그것은 무엇을합니까?성냥
^행의 시작과 일치합니다.^ abcabc, abcdef .., abc123
$행의 끝과 일치합니다.abc $내 : abc, 123abc, theabc
.어떤 캐릭터와도 매치교류abc, asg, a2c
|OR 연산자abc | xyzabc 또는 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 + cac, aac, aaac,
?문자 앞에? 0 번 또는 1 번. 또한 욕심이없는 경기로 사용됩니다.알파벳교류, abc
\역 슬래시 뒤에 문자를 이스케이프하거나 이스케이프 시퀀스를 만듭니다.\ sc교류

이스케이프 문자 (이스케이프 시퀀스)

참고 : 이스케이프 문자는 대소 문자를 구분합니다.

캐릭터그것은 무엇을합니까?
\아래에 언급되지 않은 문자는 \가 이스케이프됩니다. 예를 들어, \. 마침표와 일치하고 위에서 언급 한 기능을 수행하지 않습니다. 이스케이프해야하는 문자는 () [] {} ^ $입니다. | * +? \
\ 0Null 문자
\에이벨이나 알람을 일치시킵니다.
\비대부분 또는 백 스페이스의 단어 경계
\비비 단어 경계
\디임의의 십진수와 일치 (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 책 "정규 표현식 마스터하기"를 통해 정규 표현식을 더 많이 탐색하고자하는 경우.

컴퓨터 약어, 이스케이프 시퀀스, 표현식, 글로브, 메타 문자, 프로그래밍 용어, 물결표, 와일드 카드