정규 표현 식 의 간단 한 실례

10420 단어
정규 표현 식 의 간단 한 실례
정규 표현 식 개념
정규 표현 식(영어: Regular Expression, 코드 에 regex, regexp 또는 RE), 컴퓨터 과학 의 개념 을 간략하게 쓴다.정규 표 는 보통 특정한 패턴 (규칙) 에 맞 는 텍스트 를 검색 하고 교체 하 는 데 사용 된다.
문자
^ 줄 의 첫 번 째 $줄 의 끝. 임의의 단일 문자 [] [] 내의 임의의 단일 문자 [^] 를 제외 하고 [] 내의 임의의 단일 문자 * * 앞의 문자 중복 불 확정 횟수 + + 앞의 문 자 를 한 번 이상 반복 하 는 불 확정 횟수 \?앞 글 자 는 0 번 또는 1 번 반복 합 니 다 \ \ 전의 문자. * 임의의 길이 문자 {n} 앞 글 자 는 n 번 반복 합 니 다 {n,} 앞 글 자 는 n 번 이상 {m, n} 앞 글 자 는 m 번 과 n 번 사 이 를 반복 합 니 다.(빈 칸 과 탭 문자) [: space:] 모든 수평 과 수직 공백 문자 ([: blank:] 에 포 함 된 범위 보다 넓 음) [: cntrl:] 인쇄 할 수 없 는 제어 문자 (퇴 격, 삭제, 비상벨...) [: digit:] 십 진법 숫자 [: graph:] 인쇄 가능 한 비 공백 문자 [: print:] 인쇄 가능 문자 [: punct:] 구두점 기호 [: xdigit:] 16 진수 숫자
실례
정규 표현 식 은 단순히 원 문자 로 만 알 면 매우 추상 적 이기 때문에 우리 가 정규 표현 식 을 배 우 는 과정 에서 가장 중요 한 것 은 인 스 턴 스 입 니 다. 인 스 턴 스 는 모든 원 문자 의 역할 과 기능 을 직관 적 으로 보 여 줍 니 다.
그러면 다음 에 나 는 두 개의 실례 를 들 어 정규 표현 식 의 용법 을 설명 하 겠 다.
1. df 와 grep 를 이용 하여 디스크 의 각 파 티 션 이 용 률 을 추출 하고 큰 것 에서 작은 것 으로 정렬 합 니 다.
먼저 df 를 한 번 실행 하여 디스크 의 각 파 티 션 이 용 률 의 위 치 를 봅 니 다.
[root@centos7 ~]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda2      104806400 4807420  99998980   5% /
devtmpfs          485308       0    485308   0% /dev
tmpfs             499980       4    499976   1% /dev/shm
tmpfs             499980    7188    492792   2% /run
tmpfs             499980       0    499980   0% /sys/fs/cgroup
/dev/sda3       52403200   32944  52370256   1% /app
/dev/sda1        1038336  172116    866220  17% /boot
tmpfs             100000       8     99992   1% /run/user/0
[root@centos7 ~]# 

그리고 디스크 구역 이 용 률 의 특징 을 살 펴 보면 위 에서 디스크 이 용 률 뒤에 반드시 백분 의 번호 가 있 는 것 을 볼 수 있다. 그러면 우 리 는 이곳 에서 부터 검색 할 수 있다.
[root@centos7 ~]# df | grep -o "\
5%
0%
1%
2%
0%
1%
17%
1%
[root@centos7 ~]# 

위의 명령 을 실행 한 후에 디스크 의 이 용 률 이 이미 추출 되 었 음 을 볼 수 있 지만 순서 가 좀 복잡 합 니 다. 이 문 제 는 잠시 후에 해결 하 겠 습 니 다.
“\
이 정규 표현 식 을 통 해 일치 하 는 값 을 정확하게 찾 을 수 있 습 니 다.
순서 문 제 는 sort 명령 으로 해결 할 수 있 습 니 다.
[root@centos7 ~]# df | grep -o "\ | sort -nr
17%
5%
2%
1%
1%
1%
0%
0%
[root@centos7 ~]# 

위 와 같이 이렇게 하면 문제 의 요 구 를 완성 할 수 있다.
2. / etc / passwd 의 두 자리 또는 세 자리 수 를 찾 아 라.
이런 문제 에 부 딪 히 면 첫 번 째 단 계 는 우리 가 찾 아야 할 내용 이 왜 위치 에 있 는 지, 어떤 특징 이 있 는 지 먼저 보 는 것 이다. 그래 야 우리 가 적당 한 정규 표현 식 으로 목 표를 정확하게 찾 을 수 있다.
우선 / etc / passwd 파일 보기
[root@centos7 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
。。。
      
。。。
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS 
tcpdump:x:72:72::/:/sbin/nologin
[root@centos7 ~]# 

이 파일 에 있 는 숫자 가 사용자 의 UID 와 GID 인 것 이 분명 하 다. 그러면 숫자 목 표를 직접 검색 할 수 있다.
[root@centos7 ~]# grep -o "\" /etc/passwd
12
11
12
100
      
38
38
72
72
[root@centos7 ~]# 

위의 실험 에서 보 듯 이 우 리 는 간단 한 명령 을 통 해 문제 상의 문 제 를 쉽게 해결 했다. 그러면 이 명령 은 어떻게 이해 합 니까?
grep - o 에서 - o 옵션 은 일치 하 는 문자 만 표시 하기 위 한 것 입 니 다.
'\' 정규 표현 식 은 실험 1 과 마찬가지 로 한정 어 첫 번 째 '\' 를 사 용 했 습 니 다. 관찰 / etc / passwd 파일 의 숫자 는 65534 와 같은 숫자 를 볼 수 있 기 때문에 어미 가 한정 되 지 않 으 면 시작 에 두 자리 에서 세 자리 숫자 가 있 는 숫자 만 일치 하면 오류 가 발생 합 니 다.
결어
위의 두 개의 인 스 턴 스 를 통 해 정규 표현 식 에 대해 새로운 이 해 를 가지 게 되 었 습 니까?
정규 표현 식 은 디 테 일 을 매우 중시 하 는 규칙 입 니 다. 정규 표현 식 을 배 우 는 과정 에서 정규 표현 식 을 익히 고 유연 하 게 활용 하려 면 연습 을 많이 해 야 합 니 다. 처리 하 는 문제 가 많 을 수록 정규 표현 식 을 유연 하 게 활용 할 수 있 고 정규 표현 식 에 대한 이해 도 더욱 깊 어 집 니 다.

좋은 웹페이지 즐겨찾기