댓글 검색 목록

[Nodejs] 쉬운 방법으로 정규식 알아보기

페이지 정보

작성자 운영자 작성일 20-04-13 20:23 조회 839 댓글 0

정규식이란 무엇입니까? 


정규식은 텍스트에서 특정 패턴을 찾는 데 사용되는 문자 또는 기호 그룹입니다. 


https://dev.to/ziishaned/learn-regex-the-easy-way-c4g 


정규식은 왼쪽에서 오른쪽으로 제목 문자열과 일치하는 패턴입니다. 

"정규 표현식"이라는 단어는 한마디로 "regex"또는 "regexp"로 약칭 된 용어를 찾을 수 있습니다. 

정규식은 텍스트를 바꾸는 데 사용됩니다. 

문자열, 유효성 검사 양식, 패턴 일치 등을 기반으로 문자열에서 하위 문자열을 추출합니다.


애플리케이션을 작성 중이고 사용자가 사용자 이름을 선택할 때의 규칙을 설정하려고 한다고 가정하십시오. 

우리는 하고 싶다 사용자 이름에 문자, 숫자, 밑줄 및 하이픈을 포함 할 수 있습니다. 우리는 또한 수를 제한하고 싶습니다 사용자 이름에 문자가 표시되어보기 흉하게 보이지 않습니다. 다음 정규식을 사용하여 사용자 이름을 확인합니다.


Regular expression 

위의 정규 표현식은 문자열 john_doe, jo-hn_doe 및 john12_as를 승인 할 수 있습니다. 해당 문자열 때문에 Jo와 일치하지 않습니다. 대문자가 포함되어 있으며 너무 짧습니다.


1. Basic Matchers 


정규식은 텍스트에서 검색을 수행하는 데 사용하는 문자 패턴입니다. 예를 들어 정규식 의미 : 문자 t, 문자 h, 문자 e


"the" => The fat cat sat on the mat.


정규식 테스트 


정규식 123은 문자열 123과 일치합니다. 정규식은 각각을 비교하여 입력 문자열과 일치합니다. 정규식의 문자를 입력 문자열의 각 문자에 하나씩 차례로 입력합니다. 정규식은 일반적으로 대소 문자를 구분하므로 정규식은 문자열과 일치하지 않습니다.


"The" => The fat cat sat on the mat.


정규식 테스트 


2. Meta Characters 


메타 문자는 정규식의 구성 요소입니다. 메타 문자는 스스로를 의미하지 않지만 대신 특별한 방법으로 해석됩니다. 

일부 메타 문자는 특별한 의미가 있으며 대괄호 안에 표시됩니다. 메타 문자는 다음과 같습니다.


Meta characterDescription
.마침표는 줄 바꿈을 제외한 모든 단일 문자와 일치합니다.
[ ]캐릭터 클래스. 대괄호 사이에 포함 된 모든 문자와 일치합니다.
[^ ]부정 문자 클래스. 대괄호 사이에 포함되지 않은 모든 문자와 일치
*이전 기호의 0 번 이상의 반복과 일치합니다.
+이전 기호의 1 회 이상의 반복과 일치합니다.
?앞의 기호를 선택적으로 만듭니다.
{n,m}Braces. Matches at least "n" but not more than "m" repetitions of the preceding symbol.
(xyz)Character group. Matches the characters xyz in that exact order.
|Alternation. Matches either the characters before or the characters after the symbol.
\Escapes the next character. This allows you to match reserved characters { } . * + ? ^ $ \ |
^Matches the beginning of the input.
$Matches the end of the input.


2.1 Full stop 


완전 정지. 메타 문자의 가장 간단한 예입니다. 메타 문자. 단일 문자와 일치합니다. 반품과 일치하지 않습니다 또는 개행 문자. 예를 들어 정규식 .ar은 다음을 의미합니다. 모든 문자, 문자 a, 뒤에 문자 r.


".ar" => The car parked in the garage.

정규식 테스트


2.2 Character set 


문자 집합을 문자 클래스라고도 합니다. 대괄호는 문자 집합을 지정하는 데 사용됩니다. 문자 세트 안에 하이픈을 사용하여 문자의 범위를 지정하십시오. 

대괄호 안의 문자 범위 순서는 중요하지 않습니다. 예를 들어 표현 [Tt] : 대문자 T 또는 소문자 t, 문자 h, 문자 e가 뒤 따른다.


"[Tt]he" => The car parked in the garage.


정규식 테스트


그러나 문자 집합 내의 마침표는 리터럴 마침표를 의미합니다. 정규식 ar [.]은 다음을 의미합니다 : 소문자 a, 뒤에 문자 r, 마침표. 캐릭터.


"ar[.]" => A garage is a good place to park a car.


정규식 테스트


2.2.1 Negated character set 


일반적으로 캐럿 기호는 문자열의 시작을 나타내지 만 여는 대괄호 뒤에 입력하면 문자 세트. 예를 들어, 정규식 [^ c] ar는 다음을 의미합니다. c를 제외한 모든 문자, 그 뒤에 문자 a, 그 뒤에 오는 문자 r.


"[^c]ar" => The car parked in the garage.


정규식 테스트


2.3 Repetitions 


메타 문자 뒤에 오는 +, * 또는? 하위 패턴이 몇 번 발생할 수 있는지 지정하는 데 사용됩니다. 이 메타 문자는 상황에 따라 다릅니다.


2.3.1 The Star 


* 기호는 이전 매처의 반복 횟수가 0 이상입니다. 정규식 a *는 0 회 이상의 반복을 의미합니다. 선행 소문자 a. 그러나 문자 세트 또는 클래스 뒤에 나타난 경우 전체의 반복을 찾습니다. 문자 세트. 예를 들어, 정규식 [a-z] *는 다음을 의미합니다.


"[a-z]*" => The car parked in the garage #21.


정규식 테스트


* 기호는 메타 문자와 함께 사용할 수 있습니다. 모든 문자열과 일치합니다. *. * 기호는 공백 문자 \ s는 공백 문자 문자열과 일치합니다. 예를 들어, \ s * cat \ s * 표현식은 0 이상을 의미합니다. 공백, 소문자 c, 소문자 a, 소문자 t, 소문자 t 0 개 이상의 공백.


"\s*cat\s*" => The fat cat sat on the concatenation.


정규식 테스트


2.3.2 The Plus 


+ 기호는 이전 문자의 하나 이상의 반복과 일치합니다. 예를 들어 정규식 c. + t는 다음을 의미합니다. 문자 c 뒤에 하나 이상의 문자가 오고 뒤에 소문자 t가옵니다. t가 문장의 마지막 t임을 명확히 해야 합니다.


"c.+t" => The fat cat sat on the mat.


정규식 테스트


2.3.3 The Question Mark 


정규식에서 메타 문자? 선행 문자를 선택적으로 만듭니다. 이 기호는 0 개 또는 1 개의 인스턴스와 일치합니다. 앞의 문자. 예를 들어, 정규식 [T]?는 다음을 의미합니다. 대문자 대문자 T (선택적)와 소문자 (소문자) 문자 h 뒤에 소문자 e가옵니다.


"[T]he" => The car is parked in the garage.

정규식 테스트


"[T]?he" => The car is parked in the garage.


정규식 테스트


2.4 Braces 


정규 표현식에서는 수량 자라고도 하는 중괄호를 사용하여 문자 또는 문자 그룹을 반복 할 수 있습니다. 예를 들어 정규식 [0-9] {2,3}은 다음을 의미합니다. 2 자리 이상 3 자리 이하 ( 0에서 9 사이의 문자).


"[0-9]{2,3}" => The number was 9.9997 but we rounded it off to 10.0.


정규식 테스트


우리는 두 번째 숫자를 생략 할 수 있습니다. 예를 들어, 정규식 [0-9] {2,}는 다음을 의미합니다. 2 자리 이상의 숫자와 일치합니다. 우리도 제거하면 쉼표 정규식 [0-9] {3}의 의미 : 정확히 3 자리와 일치합니다.


"[0-9]{2,}" => The number was 9.9997 but we rounded it off to 10.0.


정규식 테스트


"[0-9]{3}" => The number was 9.9997 but we rounded it off to 10.0.

정규식 테스트


2.5 Character Group 


문자 그룹은 괄호 (...)로 작성된 하위 패턴 그룹입니다. 앞에서 정규식으로 논의 했듯이 문자 뒤에 한정자를 넣으면 앞의 문자가 반복됩니다. 그러나 캐릭터 그룹 뒤에 수량자를 넣으면 전체 문자 그룹을 반복합니다. 예를 들어, 정규식 (ab) *은 문자 "ab"의 반복이 0 개 이상 일치합니다. 우리는 또한 교대를 사용할 수 있습니다 | 문자 그룹 내부의 메타 문자. 예를 들어 정규식 (c | g | p) ar는 소문자 c, g 또는 p, 문자 a, 문자 r이 차례로 옵니다.


"(c|g|p)ar" => The car is parked in the garage.

정규식 테스트


2.6 Alternation 


정규식 세로 막대 | 대체를 정의하는 데 사용됩니다. 교대는 여러 식 사이의 조건과 같습니다. 지금, 문자 세트와 대체가 같은 방식으로 작동한다고 생각할 수도 있습니다. 그러나 문자 집합과 대체의 큰 차이점 문자 세트는 문자 레벨에서 작동하지만 대체는 표현식 레벨에서 작동한다는 것입니다. 예를 들어 정규식 (T | t) 카 : 대문자 T 또는 소문자 t, 소문자 h, 소문자 e 또는 소문자 c, 소문자 a, 소문자 r이 뒤 따릅니다.


"(T|t)he|car" => The car is parked in the garage.

정규식 테스트


2.7 Escaping special character 


백 슬래시 \는 정규식에서 다음 문자를 이스케이프 하기 위해 사용됩니다. 이를 통해 기호를 일치하는 문자로 지정할 수 있습니다 예약 문자 포함 {} [] / \ + *. $ ^ | ?. 특수 문자를 일치하는 문자로 사용하려면 앞에 \를 추가하십시오. 예를 들어 정규 표현식입니다. 개행을 제외한 모든 문자를 일치시키는 데 사용됩니다. 이제 일치합니다. 입력 문자열에서 정규 식 (f | c | m) at \.? 의미 : 소문자 f, c 또는 m, 소문자 a, 소문자 t 다음에 선택적. 캐릭터.


"(f|c|m)at\.?" => The fat cat sat on the mat.


정규식 테스트


2.8 Anchors 


정규 표현식에서 앵커를 사용하여 일치하는 기호가 시작 기호 또는 끝 기호인지 확인합니다. 입력 문자열. 앵커는 두 가지 유형입니다. 첫 번째 유형은 Caret ^이며 일치하는 문자가 시작인지 확인합니다. 입력의 문자이고 두 번째 유형은 Dollar $이며 일치하는 문자가 마지막 문자인지 확인합니다. 입력 문자열.


2.8.1 Caret 


캐럿 ^ 기호는 일치하는 문자가 입력 문자열의 첫 번째 문자인지 확인하는 데 사용됩니다. 다음의 규칙을 적용하면 ^ a (a가 시작 기호 인 경우) 문자열 abc를 입력하려면 a와 일치합니다. 그러나 위의 정규식 ^ b를 적용하면 입력 문자열이 일치하지 않습니다. 입력 문자열에서 abc "b"는 시작 기호가 아니기 때문입니다. 다른 것을 보자 정규식 ^ (T | t) he 의미 : 대문자 T 또는 소문자 t는 입력 문자열의 시작 기호입니다. 소문자 h 뒤에 소문자 e가옵니다.


"(T|t)he" => The car is parked in the garage.


정규식 테스트


"^(T|t)he" => The car is parked in the garage.


정규식 테스트


2.8.2 Dollar 


달러 $ 기호는 일치하는 문자가 입력 문자열의 마지막 문자인지 확인하는 데 사용됩니다. 예를 들어 정규식 (at \.) $ 의미 : 소문자 a, 소문자 t, a 캐릭터와 매처 문자열의 끝이어야 합니다.


"(at\.)" => The fat cat. sat. on the mat.


정규식 테스트


"(at\.)$" => The fat cat. sat. on the mat.


정규식 테스트


3. Shorthand Character Sets 


정규식은 일반적으로 사용되는 문자 집합에 대한 속기를 제공하며, 일반적으로 사용되는 문자에 대한 편리한 속기 정규식. 속기 문자 집합은 다음과 같습니다.


ShorthandDescription
.Any character except new line
\wMatches alphanumeric characters: [a-zA-Z0-9_]
\WMatches non-alphanumeric characters: [^\w]
\dMatches digit: [0-9]
\DMatches non-digit: [^\d]
\sMatches whitespace character: [\t\n\f\r\p{Z}]
\SMatches non-whitespace character: [^\s]


4. Lookaround 


룩 어라운드 및 룩어 헤드는 룩 어라운드라고도 하는 특정 유형의 캡처되지 않은 그룹입니다 (패턴과 일치하는 데 사용하지만 일치하는 목록에 포함). Lookaheads는 이 패턴이 다른 패턴보다 우선하거나 다른 조건이 있을 때 사용됩니다 무늬. 예를 들어, 다음 입력 문자열 $ 4.44 및 $ 10.88에서 $ 문자가 앞에 오는 모든 숫자를 가져 오려고 합니다. 다음 정규식 (? <= \ $) [0-9 \.] *을 사용합니다. 즉,를 포함하는 모든 숫자를 가져옵니다. 문자와 앞에 $ 문자로. 다음은 정규식에 사용되는 대안입니다.


SymbolDescription
?=Positive Lookahead
?!Negative Lookahead
?<=Positive Lookbehind
?<!Negative Lookbehind

4.1 Positive Lookahead 


긍정적 인 미리보기는 표현식의 첫 번째 부분 다음에 미리보기 표현식이 있어야 한다고 주장합니다. 반환 된 경기 식의 첫 부분과 일치하는 텍스트 만 포함합니다. 긍정적 인 예측을 정의하기 위해 괄호가 사용됩니다. 이내에 괄호, 등호가 있는 물음표는 다음과 같이 사용됩니다 : (? = ...). Lookahead 표현식은 내부의 등호 뒤에 작성됩니다. 괄호. 예를 들어, 정규식 [T | t] he (? = \ sfat)은 다음을 의미합니다. 선택적으로 소문자 t 또는 대문자 T와 일치합니다. 뒤에 문자 h, 문자 e가옵니다. 괄호 안에 정규 표현식 엔진이 일치하도록 지시하는 긍정적 예측을 정의합니다. 또는 뒤에는 지방이라는 단어가 옵니다.


"[T|t]he(?=\sfat)" => The fat cat sat on the mat.


정규식 테스트


4.2 Negative Lookahead 


네거티브 lookahead는 패턴이 뒤 따르지 않는 입력 문자열에서 모든 일치 항목을 가져와야 할 때 사용됩니다. 부정적 예측 우리가 긍정적 인 예측을 정의하는 것과 동일하게 정의되었지만 유일한 차이점은 우리가 부정을 사용하는 equal = character 대신입니다! 캐릭터 즉 (?! ...). 다음 정규식 [T | t] he (?! \ sfat)을 살펴 봅시다. fat 단어 뒤에 오는 입력 문자열 앞에 공백 문자가 옵니다.


"[T|t]he(?!\sfat)" => The fat cat sat on the mat.

정규식 테스트


4.3 Positive Lookbehind 


양의 lookbehind는 특정 패턴이 앞에 오는 모든 일치 항목을 가져 오는 데 사용됩니다. 긍정적 인 lookbehind는 (? <= ...). 예를 들어 정규식 (? <= [T | t] he \ s) (fat | mat)은 다음을 의미합니다. 입력 문자열에서 모든 지방 또는 매트 단어를 가져옵니다. 단어 뒤에 또는 입니다.


"(?<=[T|t]he\s)(fat|mat)" => The fat cat sat on the mat.


정규식 테스트


4.4 Negative Lookbehind 


음수 lookbehind는 특정 패턴이 선행되지 않는 모든 일치 항목을 가져 오는 데 사용됩니다. 부정적인 lookbehind는 (? <! ...). 예를 들어 정규식 (? <! (T | t) he \ s) (cat)은 다음을 의미합니다. 입력 문자열에서 모든 고양이 단어를 가져옵니다. 또는 단어 뒤에 있지 않습니다.


"(?<![T|t]he\s)(cat)" => The cat sat on cat.

정규식 테스트



5. Flags 


플래그는 정규식의 출력을 수정하기 때문에 수정 자라고도 합니다. 이 플래그는 어떤 순서로나 사용할 수 있습니다 RegExp의 필수 요소입니다.


FlagDescription
iCase insensitive: Sets matching to be case-insensitive.
gGlobal Search: Search for a pattern throughout the input string.
mMultiline: Anchor meta character works on each line.

5.1 Case Insensitive 


i 수정자는 대소 문자를 구분하지 않는 일치를 수행하는 데 사용됩니다. 예를 들어, 정규식 / The / gi는 대문자를 의미합니다. T 뒤에 소문자 h, 문자 e가옵니다. 정규식이 끝나면 i 플래그는 대소 문자를 무시하는 정규식 엔진. 보시다시피 패턴을 검색하기 위해 g 플래그도 제공했습니다. 전체 입력 문자열


"The" => The fat cat sat on the mat.


정규식 테스트


"/The/gi" => The fat cat sat on the mat.

정규식 테스트


5.2 Global search 


g 수정자는 전체 일치를 수행하는 데 사용됩니다 (첫 번째 일치 후 중지하지 않고 모든 일치를 찾습니다). 예를 들어 정규 표현식 /.(at)/g 의미 : 줄 바꾸기를 제외한 모든 문자, 소문자 a, 소문자 문자 t. 정규 표현식 끝에 g 플래그를 제공했기 때문에 이제 전체 입력에서 모든 일치 항목을 찾습니다. 문자열.


"/.(at)/" => The fat cat sat on the mat.


정규식 테스트


"/.(at)/g" => The fat cat sat on the mat.


정규식 테스트


5.3 Multiline 


m 수정자는 여러 줄 일치를 수행하는 데 사용됩니다. 앞에서 설명한 것처럼 앵커 (^, $)는 패턴이 있는지 확인하는 데 사용됩니다. 입력의 시작 또는 입력 문자열의 끝 그러나 앵커가 각 라인에서 작동하도록 하려면 m 플래그를 사용하십시오. 예를 들어 정규 표현식 /at(.)?$/gm 의미 : 소문자 a, 소문자 t, 선택적으로 new 이외의 것 선. 그리고 m 플래그 때문에 이제 정규 표현식 엔진은 문자열의 각 줄 끝에서 패턴을 찾습니다.


"/.at(.)?$/" => The fat
                cat sat
                on the mat.


정규식 테스트


"/.at(.)?$/gm" => The fat
                  cat sat
                  on the mat.


정규식 테스트



댓글목록 0

등록된 댓글이 없습니다.

웹학교 로고

온라인 코딩학교

코리아뉴스 2001 - , All right reserved.