Web/Javascript

[Javascript] 자바 스크립트에서 문자열을 여러 구분 기호로 분할하기(split)

꾹꾹이 2021. 10. 5.
728x90

javascript에서 문자를 분할할 때 split 함수를 많이 사용한다.

 

보통 분할 구분 기호가 하나인데 여러개를 사용하고 싶을 때는 어떻게 해야할까?

정규식을 사용하면 된다.

 

정규식이 뭔고하면..

정규표현식이라는 것을 이용해 내가 직접 만들어서 사용하는 것으로... /(슬러시)로 감싸는 패턴이다.

자세한 내용은 아래와 같다.

 

✔특수문자 사용하기

  • 검색에서 하나 이상의 b들을 찾거나, 혹은 공백을 찾는 것과 같이 '있는 그대로의 대응' 이상의 대응을 필요로 할 경우, 패턴에 특수한 문자를 포함시킨다.
  • 예를 들어 '/ab*c/' 패턴은 'a'문자 뒤에 0개 이상의 'b'문자가 나타나고 바로 뒤에 'c'문자가 나타나는 문자 조합에 대응된다.

'\'

  • 특수문자가 아닌 문자 앞에서 사용된 백슬래시는
    '해당 문자는 특별하고, 문자 그대로 해석되면 안된다'라는 사실을 가리킨다.
    예를 들어, 앞에 \가 없는 'b'는 보통 소문자 b가 나오는 패턴과 대응된다.
    그러나 '\b'자체는 어떤 문자와도 대응되지 않는다.
    이 문자는 특별한 단어 경계 문자를 형성한다.
  • 특수 문자 앞에 위치한 백슬래시는 '다음에 나오는 문자는 특별하지않고,
    문자 그대로 해석되어야 한다'는 사실을 가리킨다.
    예를 들어, 패턴 /a/ 에서의 특수문자 ''는 0개 이상의 'a' 문자가 등장함을 나타낸다.
    이와는 다르게, 패턴 /a*/ 는 ''이 특별하지 않다는 것을 나타내며,
    'a'와 같은 문자열과 대응될 수 있다.

'^'

  • 입력의 시작 부분에 대응된다. 만약 다중행 플래그가 참으로 설정되어 있다면,
    줄 바꿈 문자 바로 다음 부분과도 대응된다.
    예를 들어, /^A/ 는 "an A" 의 'A'와는 대응되지 않는다, 그러나 "An E" 의 'A'와는 대응된다.

'$'

  • 입력의 끝 부분과 대응된다. 만약 다중행 플래그가 참으로 설정되어 있다면,
    줄 바꿈 문자의 바로 앞 부분과도 대응된다.
    예를 들어, /t$/ 는 "eater" 의 't'에는 대응되지 않는다, 그러나 "eat" 과는 대응된다.

'*'

  • 앞의 표현식이 0회 이상 연속으로 반복되는 부분과 대응됩니다. {0,} 와 같은 의미입니다.
    예를 들어, /bo*/ 는 "A ghost booooed" 의 'boooo' 와 대응되고,
    "A bird warbled" 의 'b'에 대응되지만 "A goat grunted" 내의 어느 부분과도 대응되지 않습니다.

'\d'

  • 숫자 문자에 대응됩니다. [0-9]와 동일합니다.
    예를 들어, /\d/ 또는 /[0-9]/는 "B2 is the suite number."에서 '2'에 대응됩니다.

'(x)'

  • 패턴 /(foo) (bar) \1 \2/ 안의 '(foo)' 와 '(bar)'는 문자열"foo bar foo bar"에서 처음의 두 단어에 대응되고 이를 기억합니다.
    패턴 내부의 \1와 \2는 문자열의 마지막 두 단어에 대응됩니다.
    (역주: \n 패턴은 앞의 n번째 포획괄호에 대응된 문자열과 똑같은 문자열에 대응됩니다.)
    \1, \2, \n과 같은 문법은 정규식의 패턴 부분에서 사용됩니다.
    정규식의 치환 부분에서는 $1, $2, $n과 같은 문법이 사용되어야 합니다.
    예를 들어, 'bar foo'.replace( /(...) (...)/, '$2 $1')와 같이 사용되어야 합니다. $& 패턴은 앞에서 대응된 전체 문자열을 가리킵니다.

 

 

내가 자주 사용하는 예제는 ',' ,공백, 엔터키로 분할하는 패턴이다.

"문자열".split((/,| |\n/));  => ',' 공백, 엔터키 split

 

아래 사이트는 정규식 참고 사이트다. 

정리가 잘되어있어서 나중에 내가 보려고 올려둔다..

https://curryyou.tistory.com/234

 

 

 

참고사이트

https://velog.io/@pji3504/Javascript-%EC%A0%95%EA%B7%9C%ED%91%9C%ED%98%84%EC%8B%9D%EC%97%90-%EB%8C%80%ED%95%B4

댓글