정규식, 제대로 사용하기 - 심화

2020. 8. 16. 19:20BACKEND/Linux

오늘은 정규식의 심화내용을 알아볼건데요.

심화라고 해서 어렵거나, 더 특별하지는 않습니다.

매우 기본적인 것과 알아두면 좋은 것을 구별하는 정도라고 생각하면 좋을 것 같네요 〰️

 

 

****************  INDEX  *****************

 

<1부>

🌈 정규식❓ 

🎡 정규식 사용하기 - 기본 

 

<2부>

🤖 정규식 사용하기 - 심화

 

<3부>

🔥 JS & JAVA + Regex

 

******************************************** 


 

정규식 사용하기 - 심화 🤖

✔️ \b   \B

\b \b로 감싸져 있는 문자열을 검색합니다. \bage\b라고 하면 'age'라는 문자열을 검색하게 되죠.

하지만, \b는 다른 문자 사이에 싸여진 데이터는 검색하지 않습니다.     

예를 들어 'pageseo' 라는 문자열의 'age'는 순서대로 p와 s로 둘러쌓여 있기 때문에 검색되지 않습니다.

 

정규식 : /\bgngsn\b/

aagngsnaa ❌
gngsn ⭕️
http://gngsn.tistory.com/ ⭕️

 

>> 실습

 

 

\B 는 반대로, 반드시 어떤 문자열에 둘러쌓여 있어야합니다.

 

정규식 : /\Bgngsn\B/

aagngsnaa ⭕️
gngsn ❌
http://gngsn.tistory.com/ ❌

 

>> 실습

 

 

 

 

✔️ \backReference

캡처그룹을 역참조하여 재사용할 수 있습니다.

정규식 /(abc)=\1 는 /(abc)=(abc)/ 과 똑같습니다.

\1 은 첫 번째 캡처그룹과 동일한 패턴을 사용하겠다는 의미입니다.

 

아래 예시를 보면서 더 자세히 같이 살펴보도록 하겠습니다.

 

정규식 : /(abc|def)=\1/

abc=abc  ⭕️
abc=def  ❌
def=abc  ❌
def=def  ⭕️

 

앞에 나온 캡처 패턴과 완전 일치해야만 매칭되는 것을 확인할 수 있습니다.     >> 실습

 

 

👊🏻 캡처 그룹 이름으로 참조하기

 

(?<> ) 형식을 사용하여 캡처 그룹에 이름을 지정할 수 있는데요.

이 부분에 대해 헷갈리다면 지난 포스팅을 참고해주세요! 

캡처이름으로 참고하실 수도 있습니다.

 

정규식 : /(?<ex>abc|def)=\k<ex>/

abc=abc  ⭕️
abc=def  ❌
def=abc  ❌
def=def  ⭕️

 

위의 예시를 보면 ex라는 캡처그룹을 참조해 사용한 것을 볼 수 있습니다.

 

 

 

 

✔️ (?=)  (?<=)

 

a(?=b) b 바로 뒤에 있는 a를 매칭합니다. 하지만 b은 포함되지 않습니다.      >> 실습

 

정규식 : /a(?=b)/

abc  ⭕️
acb  ❌
bac  ❌
bba  ❌
aba  ⭕️

 


(?<=b)a b 바로 앞에 있는 a를 매칭합니다. 하지만 b은 포함되지 않습니다.      >> 실습

정규식 : (?<=b)a

abc  ❌
acb  ❌
bac  ⭕️
bba  ⭕️
aba  ⭕️

 

 

✔️ (?! )  (?<! )

 

a(?!b)  b이 바로 뒤에 없는 a를 매칭합니다. 중요한 것은 b은 포함되지 않습니다.     >> 실습

 

정규식 : a(?!b)

abc  ❌
acb  ⭕️
bac  ⭕️
bba  ⭕️
aba  ⭕️

 

 

(?<!b)a  b이 바로 앞에 없는 a를 매칭합니다. 중요한 것은 b은 포함되지 않습니다.     >> 실습

정규식 : (?>!b)a

abc  ⭕️
acb  ⭕️
bac  ❌
bba  ❌
aba  ⭕️

 

 

 

 

🤡 자주 사용하는 정규식

 

✔️ 전화번호 검색        >> 실습

 

정규식 : /^[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}$/

02-901-2333    ⭕️
010-1234-5678  ⭕️
010-1111-3333  ⭕️

 

 

✔️ jpg, png 등의 확장자 이미지 파일    >> 실습

 

정규식 : ([^\s]+(?=\.(jpg|gif|png|jpeg))\.\2)

selfie.jpg    ⭕️
대지.png       ⭕️
square.jpeg   ⭕️

 

 

✔️ 소문자, 대문자, 숫자를 포함하는 비밀번호     >> 실습

 

정규식 : /(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{7,12}/

flOwer1234    ⭕️
qwerTy22      ⭕️

 

 

 

 

더 필요한 게 있으면 조금 더 추가할 예정인데요 〰️ 

만약 추천할 게 있다면 댓글로 남겨주시면 좋을 것 같아요 ❗️ 

'BACKEND > Linux' 카테고리의 다른 글

LINUX, 사용자 사용량 관리하기  (0) 2020.09.03
LINUX, 특수 권한  (2) 2020.09.03
LINUX, 권한 관리하기  (0) 2020.08.28
정규식, 어렵지 않게 사용하기 - 기본  (0) 2020.07.07
Vi, 어렵지 않게 시작하기  (2) 2020.01.24