티스토리 뷰

https://ko.wikipedia.org/wiki/%EC%A0%95%EA%B7%9C_%ED%91%9C%ED%98%84%EC%8B%9D


프로그래밍을 하며 문자열 처리를 할 때 정규표현식을 쓰면 간단히 해결 되는 경우가 있습니다.


여지껏 정규표현식 공부를 미뤄두었다가 이제서야 공부하게 되네요.


우선 연습이 필요할텐데 이를 위한 사이트가 있음을 알게 되었습니다.


https://regexr.com/


또 c++11부턴 정규표현식을 위한 라이브러를 지원합니다. 


http://www.cplusplus.com/reference/regex/


이를 잘 활용하면 문자열 처리를 좀 더 손쉽게 할 수 있을것입니다.



----------------------------------------------------------------


연습1.


([A-Z])\w+


위의 정규표현식은


우선 대문자로 시작함을 의미합니다. []는 괄호 안에 존재하는 범위의 문자 하나를 매칭시킵니다.


만약 [A-Z]* 선택한다면 대문자로 시작하여 대문자로만 존재하는 문자열을 모두 선택하게 됩니다.


그 다음으로 \w는 글자 하나를 선택하게 됩니다. 


즉 대문자로 시작하면서 그다음으로 글자가 오는경우입니다.


다시말해 Az AA Ao 는 가능하지만 A9 ab A*는 안됩니다.



여기서 다시 +가 따라오므로 두번째 문자가 1개 혹은 그 이상 존재할때만 선택하게 됩니다.


결국 문자열중 대문자로 시작하는 단어를 모두 선택하게 됩니다.


이는 애당초 \w로 했을때 모든 단어를 선택하기 위함과는 차이가 있습니다.


\w는 소문자까지 포함되지만 [A-Z]를 시작으로 넣음으로 대문자로 시작하는 단어를 추출할 수 있게 됩니다.




-------------------------------------

연습2

확장자가 html또는 HTML을 선택하기.



12312.html

asds.jpg

__2.js

asd_jsp

As d4$.html

asd-aasd2.txt

asdadshtml

ASDASGF.httt

ASDA2323----asd.txml 

___1112.html  

dsad_html.html

_12ASddd.txt 

1.html


a.mov

D.html

_.html

322.avi

.html

ASD.html

 2323.html

AASD.HTML

__23..html

asdaf[2fds].html

asdas(443_34).html

__123[43(23)asd_)].txt

((()[[].html

ffa124.html3

ffa124.htmlaa


위와 같은 목록에서 html혹은 HTML의 확장자만 골라내는 정규식작성을 해봅시다.


우선 핵심으로는 파일 이름은 


파일이름으로 올 수 있는 경우를 모두 조건에 담아야 합니다.


특수문자 띄어쓰기까지도요.


또 .를 중심으로 뒤의 확장자만 골라내야 합니다.


다시말해 html13 이런건 오면 안되죠.


우선 파일 이름을 추출하기 위해선 


[\w\d .\[\]()$@*&]+ 


다음과 같은 식을 작성하면 완성입니다.


[ ]는 무엇이든 일치시키는 문자입니다. 즉 or조건과 일치한다고 볼 수 있죠.


때문에 []로 시작하면서 []의 문자열 셋이 한개 이상 존재하기만 한다면 파일 이름을 골라 낼 수 있습니다.


이를 위해선 +의 조건을 붙입니다.


만약 *이라면 0개 이상이기 때문에 .html도 골라내게 됩니다. (필요하면 *로 해도 되겠죠)



다음으로 .을 골라 내기 위해선


\.


을 이어줍니다. 


그냥 .를 한다면 어떤 문자든 하나를 일치시키기때문에 특수문자인 .을 특별히 지칭하기 위해


\.로 입력합니다.


즉 앞의 문자열( []+ )에 이어 \.을 붙임으로 문자열+. 이 오게 됩니다.


마지막으로 확장자를 추출하기 위해 


(html|HTML)\b


으로 완료합니다.


()에 오는 문자열은 정확히 괄호 안의 문자열이 일치 해야하는데 | 조건을 덧붙임으로 두가지 문자열 중 하나만 정확히 일치하게 합니다.


하지만 html13같은 불 필요한 문자까지 오면 안되므로 마지막으로 \b을 붙입니다.


\b는 문자열의 경계선 끝을 지칭합니다 만약 \B라면 문자열의 시작을 의미하게 됩니다.


즉, html13같은 문자열만 골라내게 됩니다.


최종적으로,


[\w\d .\[\]()$@*&]+\.(html|HTML)\b


으로 완료합니다.


다른 확장자를 오게 하고 싶다면 html대신 다른것을 넣으면 되겠습니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함