Regular expressions 2

황은하·2021년 9월 7일
0

알고리즘

목록 보기
91/100
post-thumbnail

Lesson 4: Excluding specific characters

  • [^ ]
    : 대괄호와 ^를 사용하면 특정 문자를 제외할 수 있다.
    [^abc] will match any single character except for the letters a, b, or c.

  • 실습 (b를 제외한 문자열 찾기)

    hog
    dog
    bog (skip)
    -> [^b]og ([hd]og)



Lesson 5: Character ranges

  • [ - ]
    : 순차적 범위 문자를 나타낸다.
    ex) [a-c] -> a부터 c까지의 한 문자
    [0-6] -> 0부터 6까지의 단일 숫자 문자
    [^n-p] -> n에서 p까지의 문자를 제외한 모든 단일 문자

여러 문자 범위를 개별 문자와 함께 동일한 대괄호 세트에 사용할 수도 있다.

  • \w
    : 문자 범위 [A-Za-z0-9_]와 동일하고 영어 텍스트의 문자를 일치시키는 데 자주 사용되는 영숫자 메타 문자

  • \W
    : 특수문자만

대소문자가 구분된다.

  • 실습

    Ana
    Bob
    Cpc
    aax (skip)
    bby (skip)
    ccz (skip)
    -> [A-C][n-p][a-c]



Lesson 6: Catching some zzz's

아래의 반복 구문의 일부는 모든 정규식 구현에서 지원되지 않는다.

반복되는 문자 찾기 -> 원하는 문자 수를 정확히 명시하기
ex) /d/d/d -> 세 자리 문자

  • { }
    : 원하는 문자의 반복 횟수 지정하기
    ex) a{3} -> a 3번 반복 -> aaa
    a{1,3} -> a 1에서 3번 반복 -> a, aa, aaa
    [wxy]{5} ->
    (각 문자는 w, x 또는 y일 수 있음)
    wxy 5번 반복
    .{2,6} -> . 2에서 6번 반복 -> .., ..., ...., ....., ......

  • 실습

    wazzzzzup
    wazzzup
    wazup (skip)
    -> waz{3,5}up



Lesson 7: Mr. Kleene, Mr. Kleene

  • * (\d*)
    : 0 이상 반복

  • + (\d+)
    : 1 이상 반복
    ex) [abc]+ -> a, b 또는 c가 1개 이상 있다.

이러한 수량자는 모든 문자 또는 특수 메타 문자와 함께 사용할 수 있다.

  • 실습

    aaabcc
    aabbbbc
    aacc
    a (skip)
    -> aa+b*c+ (a{2,4}b{0,4}c{1,2})



Lesson 8: Characters optional

  • ?
    : 0개 또는 선행 문자 또는 그룹 중 하나와 일치시킬 수 있다.
    ex) ab?c -> b는 선택이다. -> ac 또는 abc.

  • \?
    : 실제 물음표가 있는 문자 찾기

  • 실습

    1 file found?
    2 files found?
    24 files found?
    No files found. (skip)
    -> \d+ files? found\?



Lesson 9: All this whitespace

  • \s
    : 공백 특수 문자

공백 문자는 다른 문자와 동일하며 별표 및 더하기와 같은 특수 메타 문자도 사용할 수 있다.

  • \S
    : Any Non-whitespace character

  • 실습 (하나 이상 공백이 있는 문자열 찾기)

    1. abc
    2. abc
    3. abc
      4.abc (skip)
      -> \d\.\s+abc


Lesson 10: Starting and ending

  • ^ $
    : 시작과 끝을 나타낸다.
    ex) ^success -> success로 시작하는 문장
  • [^ ] 와는 다르니 헷갈리지 말 것!
  • 실습 (첫번째 문장만 찾기)

    Mission: successful
    Last Mission: unsuccessful (skip)
    Next Mission: successful upon capture of target (skip)
    -> ^Mission: successful$



Lesson 11: Match groups

정규 표현식을 사용하면 텍스트를 일치시킬 뿐만 아니라 추가 처리를 위해 정보를 추출할 수 있다.

  • ( )
    : 한 쌍의 괄호 안에 있는 모든 하위 패턴은 그룹으로 캡처된다.
    ex) ^(IMG\d+.png)$ -> 파일 확장자까지 캡처
    ^(IMG\d+) -> 확장자 없이 파일 이름만 캡처

  • 실습 (파일명만 캡쳐하기)

    file_record_transcript.pdf
    file_07241999.pdf
    testfile_fake.pdf.temp (skip)
    -> ^(file.+)\.pdf$



Lesson 12: Nested groups

  • (())
    : 중첩되어서 캡쳐할 수 있다.
    순서는 왼쪽 -> 오른쪽 으로 읽는다.

  • 실습

    Jan 1987
    May 1969
    Aug 2011
    -> ^(\w+ (\d+))$



Lesson 13:

  • 별표 *, 더하기 +, 반복 {m,n} 및 물음표 ? 는 캡처 그룹 패턴 내에서 모두 사용할 수 있다. 이것은 개별 문자 자체 대신 문자 시퀀스에 수량자를 적용하는 유일한 방법입니다.

  • 몇 자리 숫자가 들어갈 지 모를 때 {숫자}가 아닌 +로 쓴다.

  • 실습

    1280x720 -> 1280 720 캡쳐
    1920x1600 -> 19200 1600 캡쳐
    1024x768 -> 1024 768 캡쳐
    -> (\d+)x(\d+)



Lesson 14: It's all conditional

  • | (논리적 OR, 파이프라고도 함)
    : 그룹을 사용할 때 가능한 다른 문자 집합을 나타냅니다
    ex) Buy more (milk|bread|juice) -> Buy more milk, Buy more bread, Buy more juice

  • 메타 문자 쓸 수 있지만 너무 복잡해지면 패턴으로 만들자.

  • 실습

    I love cats
    I love dogs
    I love logs (skip)
    I love cogs (skip)
    -> I love (cats|dogs)



Lesson 15: Other special characters

  • 메타캐릭터의 소문자를 대문자로 바꾸면 반대의 의미가 된다.
    - \D: 숫자가 아닌 문자
    - \S: 공백이 아닌 문자
    - \W: 점과 같은 영숫자가 아닌 문자.

  • \b
    : 단어와 단어가 아닌 문자 사이의 경계와 일치하는 특수 메타 문자
    전체 단어를 캡처하는 데 가장 유용하다(예: \w+\b 패턴 사용).

  • 구현에 따라 다르긴 하지만, 캡처된 그룹을 참조할 수 있다.
    - \0: 일반적으로 전체 일치 텍스트
    - \1: 그룹 1
    - \2: 그룹 2

  • 실습

    The quick brwon fox jumps over the lazy dog.
    There were 614 instances of students getting 90.0% or above.
    The FCC had to censor the network for saying &$#@!
    -> `.
    ` (이외에 다양한 답이 있을 수 있다.)



Lesson Notes

표현의미
abc...Letters
123...Digits
\dAny Digit
\DAny Non-digit character
.Any Character
\.Period
[abc]Only a, b, or c
[^abc]Not a, b, nor c
[a-z]Characters a to z
[0-9]Numbers 0 to 9
\wAny Alphanumeric character
\WAny Non-alphanumeric character
{m}m Repetitions
{m,n}m to n Repetitions
*Zero or more repetitions
+One or more repetitions
?Optional character
\sAny Whitespace
\SAny Non-whitespace character
^…$Starts and ends
(…)Capture Group
(a(bc))Capture Sub-group
(.*)Capture all
(abcㅣdef)Matches abc or def
profile
차근차근 하나씩

0개의 댓글