정규표현식

shinetiger·2022년 8월 8일
0

이론정리

목록 보기
4/13

정규표현식이란

정규 표현식은 문자열에 나타난 특정 문자 조합과 대응시키기 위해 사용되는 패턴이다.

정규표현식은 객체이다.

정규표현식의 분류

  • 컴파일(compile)
    : 검출 하고자 하는 패턴을 만드는 일
  • 실행(execution)

정규표현식이 이용되는 곳

  • 패턴을 만들면 패턴에 해당되는 문자열을 추출할 때
  • url이나 문자열에서 해당 패턴이 존재하는지 테스트하는것
  • 찾아낸 정보를 다른 정보로 치환하는 것

정규표현식에서의 특수문자

CharacterMeaning
+앞의 표현식이 1회 이상 연속으로 반복되는 부분과 대응됩니다. {1,} 와 같은 의미
예를 들어, /a+/ 는 "candy"의 'a'에 대응되고 "caaaaaaandy" 의 모든 'a'들에 대응되지만,
"cndy" 내의 어느 부분과도 대응되지 않습니다
^입력의 시작 부분에 대응됩니다. 만약 다중행 플래그가 참으로 설정되어 있다면,
줄 바꿈 문자 바로 다음 부분과도 대응됩니다.예를 들어, /^A/ 는 "an A" 의 'A'와는 대응되지 않습니다,
그러나 "An E" 의 'A'와는 대응됩니다.'^' 가 문자셋([abc]) 패턴의 첫 글자로 쓰인다면,
그 때는 전혀 다른 의미를 가집니다.예를 들어, /[^javascript]/는 [ ]안의 각 문자를 제외하고 검색한다.
[\d]숫자만 선택
[\D]숫자가 아닌것만 선택(/d와 반대)-한글,영문,공백,특수기호 등
[\w]문자와 숫자를 선택(그러나 한글은 선택되지않는다)
[\W]문자와 숫자가 아닌 것을 선택(/w와 반대)-한글,공백,특수기호
[a-zA-Z가-힣]영어소문자,대문자,한글 모두 선택
[\s]공백만 선택
[\S]공백이 아닌 것만 선택
.개행 문자를 제외한 모든 단일 문자와 대응됩니다.
예를 들어, /.n/는 "nay, an apple is on the tree"에서 'an'과 'on'에 대응되지만, 'nay' 에는 대응되지 않습니다.
?앞의 표현식이 0 또는 1회 등장하는 부분과 대응됩니다. {0,1} 와 같은 의미입니다.
예를 들어, /e?le?/ 는 "angel"의 'el' 에 대응되고, "angle"의 'le' 에 대응되고 또한 "oslo" 의 'l'에도 대응됩니다.
*앞의 표현식이 0회 이상 연속으로 반복되는 부분과 대응됩니다.{0,} 와 같은 의미입니다.
예를 들어, /bo*/ 는 "A ghost booooed" 의 'boooo' 와 대응되고, "A bird warbled" 의 'b'에 대응되지만
"A goat grunted" 내의 어느 부분과도 대응되지 않습니다.
{n,m}n과 m은 양의 정수이고, n <= m를 만족해야 합니다. 앞 문자가 최소 n개, 최대 m개가 나타나는 부분에 대응됩니다.
m이 생략된다면, m은 ∞로 취급됩니다.
(x)다음의 예제가 보여주는것처럼 'x'에 대응되고, 그것을 기억합니다. 괄호는 포획 괄호라 불립니다.
패턴 /(foo) (bar) \1 \2/ 안의 '(foo)' 와 '(bar)'는 문자열"foo bar foo bar"에서 처음의 두 단어에 대응되고
이를 기억합니다.패턴 내부의 \1와 \2는 문자열의 마지막 두 단어에 대응됩니다.\1, \2, \n과 같은 문법은
정규식의 패턴 부분에서 사용됩니다. 정규식의 치환 부분에서는 $1, $2, $n과 같은 문법이 사용되어야 합니다.
예를 들어, 'bar foo'.replace( /(...) (...)/, '$2 $1')와 같이 사용되어야 합니다.
$& 패턴은 앞에서 대응된 전체 문자열을 가리킵니다.
profile
의문을 질문으로 바꾸는 개발자

0개의 댓글