정규식 정리

Cheki·2023년 7월 1일
0

etc

목록 보기
13/22
post-thumbnail

정규식

정규식은 정규표현식이라고도 하는데 문자열의 집합을 표현하는데 사용하는 형식의 언어라고 한다. 문자열에서 특정부분을 찾거나 추출할때 유용하게 사용된다.

정규식은 슬래쉬(/) 사이에 정규식의 기호가 들어간 형태로 예를 들면
/abc/ 이렇게 쓰인다. 마지막 슬래뒤에 무언가 붙어있으면 플래그이다. 플래그는 옵션으로 하나의 문자만 찾을지 여러개를 찾을지 결정하는 것이라고 보면된다.


정규식 플래그

  • g(gobal) : 패턴과 일치하는 모든 것들 검색
  • i : 대·소문자 구분 없이 검색 => ex) /a/i
  • m : 여러줄에 걸쳐서 검색

정규식 문법


예시를 비워둔것은 한 줄에 담기 힘들어서..ㅠ^ㅠ

/d의 예시는 다음과 같다.

const reg = /\d/g;
const str = "I have 3 apples and 5 oranges.";
const matches = str.match(reg);
console.log(matches)

숫자를 검색하는 정규식과 모든 것을 검색해주는 g플래그를 추가해 reg라는 정규식을 담고있는 것을 만들고 str 사이에 숫자를 삽입해 주었다.
그리고 match라는 메서드를 통해 매치되는 부분을 배열로 반환하게 해주었다. 메서드에 대한 설명은 아래에서!
결과는 ["3", "5"] 와 같다.


정규식 메서드

(정규표현식).exec("문자열") : 정규식안에 문자열이 있다면 배열로 그 문자열을 반환

(정규표현식).test("문자열") : 정규식이 문자열과 매치되면 true 아니면 false반환

("문자열").match(정규표현식) : 정규식과 매치되는 문자열 부분을 검색하여 배열로 반환

("문자열").replace(정규식표현식 ,대체문자) : 정규식과 매치되는 부분을 대체문자로 변환


예제

프로그래머스의 코딩테스트에서 문제를 가져왔다..ㅎㅎ

문제 설명
알파벳으로 이루어진 문자열 myString과 pat이 주어집니다. myString의 연속된 부분 문자열 중 pat이 존재하면 1을 그렇지 않으면 0을 return 하는 solution 함수를 완성해 주세요. (단, 알파벳 대문자와 소문자는 구분하지 않습니다.)

대소문자를 구분하지 않는다!!여기서 정규식 플래그가 생각이 나서 정규식 메서드를 이용해서 문제를 풀어야 겠다는 생각에 이용해서 풀어보았다.

function solution(myString, pat) {
    const result = new RegExp(pat,"i")
    return result.test(myString) ? 1:0
}

정규표현식을 직접작성하지 않고 주어진 pat이라는 것이 있으므로 이것을 이용해서 문제를 풀어야한다.

매개변수가 문자열이므로 new RegExp(obj)를 사용해서 내부적으로 패턴을 생성하도록 한다. 내가 작성하지 않아도 알아서 정규표현식으로 만들어주는듯?

new RegExp(pat) pat이 내가 검사하고 싶은 객체니까 넣어주면 result에 정규식으로 변환된 패턴으로 저장된다. 여기서 플래그를 이용해서 대소문자를 구분하지 않도록 i를 추가++

그리고 (정규표현식).test("문자열")인 test메서드를 사용해서 문자열이 존재하는지 아닌지 구분할것이다. 근데 삼항연산자를 곁들인...

true면 1로 false면 0으로 반환하게 해주었다. 문제에서 원하는 결과니까!

match메서드를 사용해서도 가능하다.
("문자열").match(정규표현식)이니까 (myString).match(result)
로 문자열-정규표현식 순서만 지키면 ok👌

풀었다~

참고
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/match

profile
초보 웹공부러입니다

0개의 댓글