정규표현식

Park Jae Hong·2022년 8월 5일
0

정규표현식 사용하기

정규표현식 사용법

  • ^ : 문자열의 시작을 표현한다. [ ... ] 내부에서 쓰이는 경우라면 뒤의 패턴에 일치하지 않는 것을 선택한다.

  • ^http : 문자열이 http로 시작하는 경우에만 매치하며, 중간에 나타난 http에는 매치하지 않는다.
    ab[^0-9]: “ab” 뒤에 숫자가 아닌 것이 오는 것에만 매치한다. (“abc” – O, “ab1” – X)

  • $ : 문자열의 끝을 표현한다.

  • them$ : 문자열이 “them”으로 끝난 경우에만 해당 “them”에 매치한다.

  • \b : 단어의 경계. 문자열 시작과 끝, 공백, 개행, 탭, 콤마, 구두점, 대시문자 등이 올 수 있다.

  • \bplay\b : 는 단어 경계로 구분되는 “play”에는 매치한다. 하지만 “playground”의 “play”에는 매치하지 않는다.

  • \B : \b가 아닌것. 정규식 메타문자에서는 흔히 대문자로 표현한 것은 소문자로 표현한 문자의 반대를 의미한다.

  • \bplay\B : “play”뒤에 단어의 경계가 아닌 것이 올 때에만 매치한다. “playground”, “playball”의 “play”에 매치한다. 뒤에 오는 “g”, “b” 등의 문자는 포함하지 않는다.

  • \s : 공백 문자 및 탭 문자에 매치한다.

  • \S : 공백 문자가 아닌 한 글자에 매치한다.

  • \d : 숫자에 매치한다. [0-9]와 같다.

  • \D : 숫자가 아닌 문자에 매치한다. [^0-9]와 같다.

  • \w : 단어를 만들 수 있는 글자. 알파벳 대소문자, 숫자, 언더스코어를 포함한다. [A-Za-z0-9_] 와 같다.

  • \W : \w에 포함되지 않는 문자들

  • \n : 개행문자. \r은 캐리지 리턴이다.

  • \ : 이스케이프용 문자. 정규식 상의 특별한 의미가 있는 문자들을 문자 그대로 쓸 때 앞에 붙인다. \^ 라고 쓰면 “^” 문자 그대로를 가리킨다.

  • . : 아무 문자 1개에 대응된다. 공백 역시 문자 1개로 취급된다.

대문자 소문자는 반대의 의미를 가진다 !


정규 표현식 만으로 HTML을 Parsing 할 수 없는 이유 ❗

정규 표현식의 의미

: 정규(正規)라는 단어의 의미는 규칙적인 무언가, 패턴이다. 즉, 정규 표현이라는 것은 결국 말 그대로 규칙적인 패턴을 표현하고 있다는 의미이기 때문에 우리는 일반적으로 정규 표현식이 문자열에서 내가 원하는 패턴을 매칭하는 도구이다

대표적으로 HTML, CSS와 같이 무한하게 열릴 수 있는 태그나 괄호가 존재하는 언어는 무수한 예외 상황이 나오기 때문에 규척적인 패턴을 가지기는 어렵다 !

결론 : 하나의 HTML을 위해서 정규 표현식을 만들어서 Pasing을 한다고 가정한다면 해당하는 HTML 만 사용할 수 있고 다른 HTML의 경우에는 사용이 불가하다. HTML 마다 정규 표현식을 만들어 주지 않는다면 정규 표현식 만으로 HTML을 Parsing 하는것은 실질적으로 불가능 하다 !


Quiz

< a href="https://dict.naver.com/" class="nav" data-clk="svc.dic">사전< /a>

  1. url 주소만 가져오기
    : "(http.?)://([a-zA-Z09$-.+!*'()]+/)"

  2. 모든 태그 가져오기
    : ([a-z]+)=

  3. 태그 value 값 가져오기
    : 태그명="([a-z]+)" -> class="([a-zA-Z0-9.]+)"

  4. 열린 태그와 닫힌 태그 가져오기
    : (<[a-z]+).+>.+<(/[a-z]+>)

  5. 태그 안에 text 가져오기
    : <[a-z]+.+>(.+)</[a-z]+>

<> 안에 있는 값을 변수명으로 사용 가능 ! (?< name>ABC)

참고 : https://evan-moon.github.io/2021/05/07/why-regexp-called-regexp/

profile
The people who are crazy enough to think they can change the world are the ones who do. -Steve Jobs-

0개의 댓글