정규 표현식은 무엇일까요? 정규 표현식 (regular expression) 은 미리 정의된 특정 문자들과 이러한 특정 문자들의 조합을 이용하여, 규칙 문자열을 구성하여, 문자열에 대한 필터링 논리를 표현하는 것이다.
给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);
可以通过正则表达式,从字符串中获取我们想要的特定部分。
그래서 더 편리하게 배울 수 있도록, Regextor라는 정규 표현식 검증 소프트웨어를 추천합니다. 이 글에서는 Mac에 대한 좋은 소프트웨어들을 추천합니다.

정규 표현식에는 일반 텍스트만 포함될 수 있으며, 이 텍스트와 정확히 일치하는 것을 나타냅니다. 예를 들어:
공식 표현:song
오송게, 오송게
xiao (일본어: )songge,xiaoSongge
정규 표현식은 기본적으로 대소문자를 구분하고, 따라서 song는 “Song”와 일치하지 않습니다. 그러나 대부분의 정규 표현식 구현은 대소문자를 구분하지 않는 옵션을 제공합니다.
. 임의의 문자와 일치합니다. 예를 들어:
정규 표현식: c.t
문장: cat cet caaat dog
일치된 결과:cat cet caaat dog
분석: c.t는 “c”로 시작하는, “t”로 끝나는, 중간에는 임의의 문자들로 이루어진 문자열과 일치한다.
마찬가지로, 여러 연속. 여러 연속 임의의 문자와 일치할 수 있다:
정규 표현식: c..t
문건과 일치하기 위해 기다립니다: cat cet caat dog
일치된 결과: cat cet caat dog
.는 정규 표현식에서 특별한 의미를 포함하고, 특별한 문자이다。\는 또한 특별한 문자이며, 특별한 문자에 대한 번역 역할을 할 수 있다。 만약 당신이 진짜 “”. 문자와 일치하고 싶다면, .를 더하기 전에\를 문자에 대한 번역을 해야 한다。 그래서,.진짜 “ . ” 문자를 뜻한다.
정규 표현식:c.t
cat c.t dog의 문장과 일치할 예정
일치된 결과: catc.t dog
참고: “\“가 특수한 문자이기 때문에, 실제 “\” 문자와 일치하기 위해서는 두 개의 반사선을 사용해야 합니다.\:
정규 표현식:c\t
cat c\t dog 문자와 일치할 때까지 기다립니다
일치된 결과: catc\t dog
위와 같이 말이죠. 임의의 한 문자를 일치시킬 수 있습니다. 하지만 특정 한 문자를 일치시키면 어떨까요? 특정 한 문자를 일치시키면[그리고 [元文字。
정규 표현식:c[ab]t
cat cbt cet 문자와 일치하기 위해 대기
일치된 결과:cat cbt cet
분석:[ab]은 a 또는 b와 일치합니다. 그래서 c는[ab]t는 “cat”과 “cbt”를 일치시키지만 “cet”은 일치시키지 않는다.
이 예제에서, 만약 제가 ct를 맞추고 싶으면,[[더 1개 더 넣을 수 있나요? 그래서 제가 소문자를 맞추고 싶으면 몇 십개 더 넣을 수 있나요? 괜찮지만 너무 길죠. 여기서는[a-z]:
정규 표현식:c[a-z]t
cat cbt czt c2t
일치된 결과:cat cbt czt c2t
분석: c[a-z]t는 “c”로 시작, “t”로 끝, 가운데는 “a” - “z”의 임의의 한 글자를 나타낸다.
다른 문장들은 다음과 같습니다:
[0-9] 그리고[0123456789]의 기능과 동일하다. 모든 숫자와 일치한다. [A-F] A부터 F까지의 대문자로 일치한다. [A-Z]은 A부터 Z까지의 모든 대문자로 일치한다. [a-z]은 a에서 z까지의 모든 소문자를 일치시킨다. [A-z]는 ASCII A부터 ASCII z까지의 모든 문자를 매칭한다.[그리고 ^ 등) [A-Za-z0-9] 모든 크기의 글자와 숫자와 일치한다.
문자 집합은 일반적으로 일치해야 하는 문자 집합을 지정하는 데 사용됩니다. 그러나 때때로, 당신은 당신이 일치하고 싶지 않은 문자 집합을 배제하고 싶습니다. 문자 집합에 대한 부정으로 구현 할 수 있습니다. 예를 들어:
정규 표현식:c[^a-z]t
cat cbt czt c2t cAt
일치된 결과: cat cbt czt c2t cAt
분석: 이것은 이전 예와 완전히 반대입니다.[[a-z]는 모든 소문자를 맞추고,[^a-z] 소문자가 아닌 모든 문자와 일치한다.
^ 문자는 문자 집합에 있는 모든 문자를 무결화한다.
정규 표현식에서 메타 문자에는 특별한 의미가 있습니다.[그리고] 은 직접적으로 자신의 의미를 표현할 수 없습니다. 예를 들어, 직접적으로 사용할 수 없습니다.[“이봐, 이봐.[“이런 식으로 을 쓰면 이 맞을 거야”.
모든 메타 문자에는 앞부분에 반사선 번역이 추가될 수 있으며, 번역이 끝나면, 문자들은 그 특수한 의미보다는 그 자체와 일치하게 된다. 예를 들어,[이 이 [ “:
정규 표현식: a[b
문장 일치: a[b ab a[[b
일치된 결과:a[b ab a[[b
참고: \ 는 변기자문으로 사용되는데, 이는 \ 가 또한 변기자문이라는 것을 의미한다. 따라서 실제 “\“와 일치해야 하는 경우, 사용할 수 있다.\:
정규 표현식: a\b
문장 일치: a\b a\b a[[b
일치된 결과: a\b a\b a[[b
때때로 당신은 텍스트에서 인쇄할 수 없는 빈 문자를 맞추어야 할 수도 있습니다. 예를 들어, 당신은 모든 Tab 문자를 찾을 수 있기를 바랍니다. 또는 모든 변수 문자를 찾을 수 있습니다. 당신은 다음 표의 특수 메타 문자를 사용할 수 있습니다:

예를 들어, \r\n은 역전환 조합을 매칭하여 Windows에서 파일전환을 나타냅니다. 리눅스 및 유닉스 시스템에서는 \n만 사용해야 합니다.
일반적인 문자 집합을 맞추기 위해 사용할 수 있는 특별한 메타 문자들이 있다. 이러한 메타 문자들은 매칭 문자 클래스라고 불린다. 당신은 그것들을 사용하는 것이 매우 편리하다는 것을 알게 될 것이다.
숫자가 일치하거나 그렇지 않은 경우 이 사진에서 보여지는 것은[0-9] 모든 숫자를 매칭할 수 있습니다.[^0-9]。 아래 표에는 숫자 및 비숫자 기호가 나열되어 있다:

정규 표현식:c\dt
cat c2t czt c9t
일치된 결과: catc2t czt c9t
정규 표현식:c\Dt
cat c2t czt c9t
일치된 결과:cat c2t czt c9t
알파벳 문자와 비알파벳 문자 일치
또 다른 자주 사용되는 클래스 메타캐릭터는 \w와 \W입니다.

정규 표현식: c\wt
cat c2t czt c-t c\t
일치된 결과:cat c2t c-t c\t
정규 표현식:c\Wt
cat c2t c-t c\t
매칭 결과: cat c2tc-t c\t
비공백과 비공백을 일치시키십시오.
마지막으로, 빈 클래스를 만나게 됩니다.

정규 표현식: c\st
cat c t c2t c\t
일치된 결과: catc t c2t c\t
정규 표현식: c\St
cat c t c2t c\t
일치된 결과:cat c t c2t c\t
정규 표현식: cat
문장: ct cat caat caaat
일치된 결과: ctcat caat caaat
정규 표현식: ca+t
문장: ct cat caat caaat
일치된 결과: ctcat caat caaat
문자 집합에 + 를 사용할 때, + 기호를 집합 외부에 두는 것이 필요합니다:
정규 표현식:c[0-9]+t
ct c0t cat c123t
일치된 결과: ctc0t cat c123t
분석: c[0-9]+t는 “c”로 시작하여 “t”로 끝나는 문자열을 의미하며, 가운데에는 하나 이상의 숫자가 있다.
물론이죠.[0-9+] 또한 합법적인 정규 표현식이지만, “0” - “9” 및 “+” 기호를 포함하는 문자 집합을 나타낸다.
일반적으로, . 및 + 등이 문자 집합에 사용되는 것은 문자적 의미로 사용되므로 번역이 필요하지 않습니다. 그러나 이것을 번역하는 것도 좋습니다.[0-9+]과[0-9+]]의 기능도 똑같습니다.
참고: +는 메타 문자이며, “+“와 일치하는 것은 번역을 사용해야 합니다.+。
0과 더 많은 문자를 맞추기 위해*원자
정규 표현식: ca*t
ct cat caat cbt
일치된 결과:ct cat caat cbt
알아채다:기호는 메타 문자이다. ““와 일치하기 위해서는 번역이 필요합니다.*。
?는 0과 1을 일치시킵니다. 그래서, ?는 텍스트에서 선택 가능한 한 문자를 일치시키는 데 매우 적합합니다.
정식 표현식: ca?t
ct cat caat cbt
일치된 결과:ct cat caat cbt
참고: ? 기호는 단호이다. “?“와 일치하기 위해서는 번역이 필요합니다.?。
정규 표현식은 매칭의 횟수를 지정할 수 있다. {과 } 사이에 횟수를 지정할 수 있다. 참고: {와}도 표기자이며, 문자적인 의미를 사용하는 경우 번역이 필요합니다.
정확한 일치 매칭하는 횟수를 지정하기 위해, {와} 사이에 숫자를 입력할 수 있습니다. 예를 들어, {3}는 3번 전에 나타난 문자 또는 집합을 매칭합니다:
정규 표현식: ca{3}t
ct cat caaat cbt 문자와 일치하기 위해 대기 중
ct cat caaat cbt
최소 일치
우리는 또한 매칭하는 최소값만 지정할 수 있다. 예를 들어, {2,}는 매칭하는 2번 또는 그 이상의 값을 의미한다:
정규 표현식: ca{1,}t
ct cat caaat cbt 문자와 일치하기 위해 대기 중
일치된 결과: ctcat caaat cbt
차원 간 일치
우리는 또한 최소값과 최대값을 사용하여 일치의 수를 결정할 수 있습니다. 예를 들어, {2,3}는 최소 2번, 최대 3번의 일치를 의미합니다.
정규 표현식: ca{2,3}t
ct cat caaat cbt 문자와 일치하기 위해 대기 중
ct cat caaat cbt
그래서? {0,1}의 함수는 +, {1,}의 함수는 같죠.
다음의 예를 들어보죠.
정규 표현식: s.*g 엑소 엑소 엑소 송 (xiao song) 분석: s.*g는 두 개의 “Song”를 일치시키는 것이 아니라, 첫 번째 “s”와 마지막 “g” 사이의 모든 텍스트를 일치시킵니다.
왜냐하면,*그리고 + 는 탐욕스러운 일치입니다. 즉, 정규 표현식은 항상 최소의 일치가 아닌 최대의 일치를 찾습니다. 이것은 의도적으로 설계되었습니다.
하지만 탐욕스러운 매칭을 원하지 않는다면, 이런 수식어의 탐욕스럽지 않은 매칭을 사용하세요. 탐욕스럽지 않은 매칭은 수식어의 뒤에 붙여집니다.:

*그래?*이 사이트의 비 탐욕적인 버전은*위 예제를 수정하기 위해:
정규 표현식: s.?g
엑소 엑소 엑소
xiao (일본어)song xiao song
분석: s를 볼 수 있습니다.g는 두 개의 “송”을 맞췄습니다.
문자열의 경계와 일치하는 메타캐릭터는^과$이며, 각각 문자열의 시작과 끝을 사용한다.
↑ 사용법:
정식 표현식:^xiao
문건과 일치하는 문건:xiaosong
일치된 결과:xiaosong
문건과 일치하는 문건: axiaosong 엑시아오송 (axiaosong) 분석: ^xiao는 “xiao”로 시작하는 문자열과 일치한다.
$의 사용법은 다음과 같다:
공식 표현: song$
문건과 일치하는 문건:xiaosong
xiao (일본어: )song
시아오가 시아오가 분석: song$는 “song”로 끝나는 문자열과 일치한다.
공동 사용:
정규 표현식:^[0-9a-zA-Z]{4,}$
a1b234ABC
일치된 결과:a1b234ABC
더하기 a1b23 = 4ABC 매칭 결과: + a1b23=4ABC 분석: ^[0-9a-zA-Z]{4,}$는 숫자 또는 글자로 구성되어 있고, 디지트가 4자리보다 크다.
참고:^는 집합의 시작에 있는 경우를 부정적으로 나타냅니다. 집합의 바깥에 있는 경우를 문자열의 시작 위치와 일치시킵니다.[^0-9]과 ^[0-9]의 차이.
그러나 ((?m) 는 다선 모드를 사용할 수 있다. 다선 모드에서, 정규 표현식 엔진은 변수 기호를 문자열의 분리자 (separator) 로 사용한다. ^는 텍스트의 시작이나 한 줄의 시작과 일치하며, $은 텍스트의 끝이나 한 줄의 끝과 일치한다.
이전 예제를 수정해 봅시다.
정규 표현식: ((?m) ^[0-9a-zA-Z]{4,}$
a1b234ABC +a1b23=4ABC ABC123456
일치된 결과:a1b234ABC
+a1b23=4ABC
ABC123456
분석: ((?m) ^[0-9a-zA-Z]{4,}$는 각 줄이 숫자 또는 글자로 구성되어 있고, 비트 수가 4자리보다 큰 문자열을 매칭합니다.
참고: 다중 줄 모드를 사용하는 경우, ((?m) 는 정규 표현식의 시작에 배치되어야 한다. (? m) 는 대부분의 정규 표현식 구현에서 지원되지 않는다. 일부 정규 표현식 구현은 또한 \ A 매칭 문자열의 시작, \ Z 매칭 문자열의 끝을 사용하는 것을 지원한다. 지원한다면, 이러한 메타 문자열의 기능은 ^, $와 동일하다. 그러나 이러한 메타 문자열은 ((? m) 수정을 사용할 수 없으며, 따라서 다중 행 모드에도 사용할 수 없다.
iOS_小松哥