본문 바로가기
자기계발

정규표현식(Regular Expression) 봐도 봐도 새롭다.

by 매일 글 한개 2024. 2. 18.
매일글한개

 

포스팅을 하다가 정규 표현식을 사용할 일이 있었다.
구글의 gemini에게 물어본 결과값을 포스팅해서 복사해야 할 일이 자주 발생하는데 웹에디터에 값을 복사 후 HTML 코드 보기를 하면 구글 gemini에서 생성해놓은 코드가 묻어있다.
이걸 그대로 포스팅했다간 구글의 검색봇(bot)은 gemini에서 생성한 걸과 값이라는 걸 바로 알아차리고 검색 결과에서 제외를 할 수도 있겠다는 가설이 세워졌다.
그래서 gemini에서 생성한 코드를 빠르게 지워야 하는데 이때 정규 표현식(RegExp)를 이용한다.
정규 표현식을 보면서 공부를 여러 번 했지만 쉬운 것 같으면서도 어렵다.
사실 난 볼 때마다 새롭다. ㅎㅎ

내가 아는 범위 내에서 복습도 해볼 겸 정규 표현식을 조금 정리해 본다.

 

 

예제 문자열 :  Hello, 1day1write world! 

 

그룹및 범위

문자 의미 예제 결과
| 또는 1|! Hello, 1day1write world! 
() 그룹 (day) Hello, 1day1write world! 
[] 괄호안의 어떤 문자든
0-9 (0부터 9까지 숫자)
a-z (소문자 a부터 z까지)
A-Z (대문자 A부터 Z까지)
ey! (문자 e, y 랑 ! 느낌표)
[0-9]
[a-z]
[A-Z]
[ey!]
Hello, 1day1write world! 
Hello, 1day1write world
Hello, 1day1write world! 
Hello, 1day1write world! 
[^] 괄호안의 문자 빼고 전부 [^a-z]
[^a-z A-Z,]
Hello, 1day1write world! 
Hello, 1day1write world! 

 

 

수량한정자

문자 의미 예제 결과
? 있거나 없거나 (1 또는 0) 1d? Hello, 1day1write world! 
* 없거나, 있거나, 많거나 (0 또는 1또는 그이상) el* Hello, 1day1write world! 
+ 있거나, 많거나 (1또는 그 이상) el+ Hello, 1day1write world! 
{n} n번 반복 l{2} Hello, 1day1write world
{n,} 최소 n번 반복 l{1,}
l{2,}
Hello, 1day1write world
Hello, 1day1write world! 
{n,m} 최소 n번 부터 최대 m번까지 반복 l{2,2}
l{2,3}
Hello, 1day1write world! 
Hello, 1day1write world! 

 

 

경계 구분

문자 의미 예제 결과
\b 단어경계의 시작 (단어의 시작, 단어의 끝)
\b를 단어 앞에 쓸경우 단어의 시작
\b를 단어 뒤에 쓸경우 단어의 끝
\bw
e\b
Hello, 1day1write world! 
Hello, 1day1write world! 
\B 단어경계의 시작이 아닌 (단어의 중간)
\B를 단어 앞에 쓸경우 단어의 시작이 아닌것
\B를 단어 뒤에 쓸경우 단어의 끝이 아닌것
\Bw
w\B
Hello, 1day1write world! 
Hello, 1day1write world! 
^ 문장의 시작 ^Hello Hello1day1write world! 
$ 문장의 끝 !$ Hello, 1day1write world! 

 

 

문자집합

문자 의미 예제 결과
. 모든문자열 선택 

. Hello, 1day1write world! 
\ 특수문자의 문자 자체를 찾고싶다면
.[]{}()\^$|?*+
\?\[\] Hello, 1day1write world?  [1day1write.com]
\d 숫자만 \d Hello, 1day1write world!
\D 숫자빼고 모두 \D Hello, 1day1write world!
\w 문자만 \w Hello, 1day1write world!
\W 문자빼고 모두 \W Hello, 1day1write world!

 

반응형