-
정규식 공부 - 1공부/정규식 2023. 8. 22. 14:56
공부 시작한 이유 텍렉에서 나올 때 문자[문자|문자]와 같이 후킹되는 경우가 간혹 있는데
괄호 같은 거 제거할 줄 알아야 할 것 같아서
더 나아가 외자 이름 후처리 알게 되면 좋을 것 같아 시작한다
https://regex101.com/
정규식 시험 해볼 수 있는 곳
https://regexone.com/
해당 사이트 한 번 해봤다
밑의 내용 틀릴 수도 있지만 배운 거 정리
1. \d 는 임의의 숫자 가능, \D는 숫자를 제외한 모든 단일 문자
2. .은 모든 단일 문자(알파벳, 공백, 숫자 등) 대체 가능
하지만 마침표로서 .는 일치 무시함으로 마침표는 \. 사용
3. [abc]와 같이 []로 쓰면 a,b,c만 받아들인다
4. ^은 예외 표시를 나타냄
예를 들어 [^a] 표시이면 a를 제외한 모든 단일 문자와 일치한다는 것이다
5. 문자 범위는 [0-9]와 같은 형식으로 표현 가능, 이때는 0~9까지 표현한다
4에서 배운 ^을 응용하여 [^0-6]로 표현이 가능한데 이는 0~6을 제외한 어떤 단일 문자와 일치한다는 뜻이다
알파펫은 [A-Z]나 [a-z]로 표현이 다 표현이 가능한데, 앞은 대문자, 후는 소문자 범위라는 거에서 다르다
영숫자 그러니까 [A-Za-z0-9_]를 한 꺼번에 다 표현하는 \w라는 표현이 있다
이의 부정 모든 영숫자가 아닌 문자의 집합에 대해서는 \W라는 표현을 쓴다
6. 이 파트는 일부 정규식에서 적용되지 않는다
반복 횟수의 경우{}으로 표현할 수 있다
예를 들어 zzz을 표현할 때 zzz를 쓰거나 , \w\w\w와 같이도 표현할 수 있지만 z{3} 혹은 \w{3}로 표현하는 게 편하다는 거다
z{1,3}와 같이 표현 할 수도 있는데 이는 z가 1~3사이에 반복된다는 거다
이를 더 복잡하게 [xyz]{2~4}와 같이 쓸 수 도 있는데 이는 x 또는 y 또는 z가 2~4번 반복한다는 거다
7. 문자 뒤에 나오는 *는 0번 이상 반복된다는 것을 표현하고 +는 1번 이상 반복된다는 것을 뜻한다
예를 들어 aaaabbcc, aabbbbc, aacc에서 정규식을 뽑으려면 a+b*c+와 같이 표현할 수 있다는 것이다
이를 풀어해석하면 a가 1번이상 반복되어서 나온 후 연달아 b가 0번이상 반복되어 나온 후 마지막으로 c가 1번 이상 반복되어 나온다는 뜻이다
8. ?은 나올 수도 있고 안 나올 수도 있다는 뜻이다
예를 들어 ab?c라는 정규식은 b가 나온 abc, b가 안 나온 ac에 둘 다 대응을 한다는 것이다
이로 인해 문자로서 ?는 무시됨으로 문자로 쓸 떄는 \?을 쓴다
9. 공백 표현은 스페이스는 스페이스로, 탭키는 \t, 새 줄은 \n, 캐리지 리턴은 \r로 표현한다고 한다
이러한 공백을 다 통 틀어서 \s로 표현할 수가 있다
당연하게도 공백이 아닌 모든 단일 문자는 \S가 되게 된다
캐리지 리턴: 문장의 맨 앞으로 커서를 맨 앞으로 옮기는 기능이라고 한다
10. ^는 문장의 시작을 $는 문장의 끝을 나타낸다
예를 들어 ^사소시 는 사소시로 시작하는 모든 문장을 뜻한다
이때 $를 사용해서 ^사소시$ 를 만들면 이는 완벽하게 사소시 만 적힌 문장을 뜻한다
11. ()는 소그룹을 표현할 떄 쓴다
12. 소그룹은 ( 순서로 읽어 저장된다
13. |는 or을 뜻한다
고양이 또는 개 를 표현하고 싶으면 (고양이|개)
14. \b는 단어 구분자라는 데 이해 안 간다
일단 오늘은 여기까지
위에 써놓은 것 보기 쉽게 잘 정리해둔 글이 있었다
https://arca.live/b/yuzusoft/31133457?target=all&keyword=%EC%A0%95%EA%B7%9C%EC%8B%9D&p=1
일단 ehnd 전처리, 후처리 방식도 미리 읽어두자
https://blog.naver.com/waltherp38/220751043340
https://blog.naver.com/waltherp38/220751198054
그리고 꿀도르 이용 시 알아야 할 사항도 읽어두자
https://blog.naver.com/waltherp38/220751538807'공부 > 정규식' 카테고리의 다른 글
정규식 공부 - 3 (진행 중) (0) 2023.08.27 정규식 연구 - 2 (0) 2023.08.22