>  기사  >  웹 프론트엔드  >  Linux에서 정규식 사용에 대한 자세한 설명

Linux에서 정규식 사용에 대한 자세한 설명

php中世界最好的语言
php中世界最好的语言원래의
2018-05-25 10:14:521688검색

이번에는 Linux에서 정규식 사용에 대해 자세히 설명하겠습니다. Linux에서 정규식을 사용할 때 주의사항은 무엇인가요? 실제 사례를 살펴보겠습니다.

1. 구성

일반 문자열, 특별한 의미 없음
특수 문자: 정규 표현식에서 특별한 의미를 가짐
정규 표현식에서 자주 사용되는 메타 문자 [특수 문자]

2. POSIX의 메타 문자 BRE [기본] 및 ERE [확장]

: 일반적으로 (...)와 같은 후속 문자의 특별한 의미를 열거나 닫는 데 사용됩니다. [는 이스케이프 문자이며 기호의 특별한 의미를 제거합니다. 의미, () , {} 등은 셸에서 특별한 의미를 갖습니다.]
.와 and의 차이점:

[root@localhost ~]# cat -n test.txt
1 gd
2 god
3
4 good
5 goood
6 goad
7
8 gboad

2.1, .: 단일 문자와 일치합니다(비워둘 수 없는 null 제외)

[root@localhost ~]# grep -n "." :gd
2:god
4:good
5:goood
6:goad
8:gboad
[root@localhost ~]# grep -n "go.d" test.txt
4:good
6:goad

2.2, : o와 같이 앞의 문자를 여러 번 일치시킵니다. o는 없음, 하나의 o 또는 여러 개가 될 수 있습니다. o

[root@localhost ~]# grep -n "*" test .txt

[root@localhost ~]# grep -n "o*" test.txt
1:gd
2:god
3:
4:good
5:goood
6:goad
7:
8:gboad
[root @localhost ~]# echo "gbad" >>test.txt
[root@localhost ~]# echo "pbad" >>test.txt
[root@localhost ~]# echo "kgbad" >> ;test.txt
[root@localhost ~]# echo "poad" >>test.txt
[root@localhost ~]# grep -n "go*" test.txt [o 생략 가능, o 앞의 내용 g는 일치해야 함】
1:gd
2:god
4:good
5:goood
6:goad
8:gboad
9:gbad
11:kgbad

*2.3, .: 모든 문자 일치(모두 일치) ), 비어 있을 수 있음**

[root@localhost ~]# grep -n ".*" test.txt

1:gd
2:good
3:
4:good
5:goood
6:goad
7:
8:gboad
9:gbad
10:pbad
11:kgbad
12:poad
[root@localhost ~]# grep -n "go.*" test.txt
2:god
4:좋음
5:goood
6:goad
[root@localhost ~]# grep -n "po.*" test.txt
12:poad
[root@localhost ~]# echo "pgoad" >>
[root@localhost ~]# grep -n "go.*" test.txt [go를 일치시킨 후에 모든 문자가 존재하며 비어 있을 수 있음]
2:good
4:good
5:goood
6:goad
13: pgoad
[root@localhost ~]#
[root@localhost ~]# grep -n "o.*" test.txt
2:god
4:good
5:goood
6:goad
8: gboad
12 :poad

2.4, ^:...

[root@localhost tmp]# grep "^root" /etc/passwd

root:x :0:0:root:로 시작하여 다음 정규식을 일치시킵니다. /root:/bin/bash
[root@localhost tmp]#

2.5, $: 다음으로 끝나는 바로 앞의 정규식과 일치합니다...

[root@localhost tmp]# grep "bash$" / etc/passwd | head -1

root:x:0:0:root:/bin/bash
[root@localhost tmp]#
^$: 빈 줄을 의미합니다. 의미
"#|^$": #

2.6으로 시작하는 주석 행 및 빈 행과 일치합니다. []: 대괄호

안의 모든 문자와 일치합니다(예: [sS], s 또는 S와 일치). 여기서 하이픈(-)을 사용하여 지정할 수 있습니다. 하이픈 범위(예: [(0-9)], 모든 문자 0-9와 일치) [^0-9] ^ 기호가 첫 번째 대괄호 위치에 나타나면 목록.

[root@localhost tmp]# 고양이 호스트
192.168.200.1
192.168.200.3
a.b.123.5
23.c.56.1
1456.1.2.4
12.4.5.6.8
[root@localhost tmp] # grep -E ' ([0-9]{1,3}.){3}[0-9]{1,3}' 호스트
192.168.200.1
192.168.200.3
1456.1.2.4
12.4.5.6.8
[root@ localhost tmp]# grep -E '^([0-9]{1,3}.){3}[0-9]{1,3}$' 호스트
192.168.200.1
192.168.200.3
[root@ localhost tmp]#

2.7, ?: 이전 문자와 0개 이상의 일치

[root@localhost ~]# grep -E "go?d" test.txt
gd
god
[root@localhost ~]#
[root@localhost tmp]# cat test
do
does
doxy
[root@localhost tmp]# grep -E "do(es)?" test
do
does
doxy
[root@localhost tmp ]#

3. POSIX BRE(기본 정규)에만 있는 문자

{n,m}: 간격 표현식, 그 앞의 단일 문자를 일치시켜 재현 [반복, 다음 단일 문자는 https{0, 1}, 즉 s를 0~1회 반복합니다. {n}은 n번 일치함을 의미하고, {n,m}은 n~m번 일치함을 의미하고, {n,}는 최소 n번 일치함을 의미하며, {,m}은 최대 m번 일치함을 의미합니다. [이스케이프 문자]

4, POSIX ERE에만 있는 문자(확장 정규)

4.1, {n,m}: BRE의 {n,m}

과 동일한 기능[root@localhost tmp ]# grep -E '^([0-9]{1,3}.){3}[0-9]{1,3}$' 호스트
192.168.200.1
192.168.200.3

4.2 , +: 이전 정규식

[root@localhost ~]# egrep "go+d" test.txt
god
good
goood
[root@localhost ~]#

4.3 , |: 여러 문자열이 일치함을 나타냅니다.           

ncube-lm 1521/tcp # nCube License Manager
ncube-lm 1521/udp # nCube License Manager

[root@localhost ~]#


4.4, ( ) :그룹 필터링,
역참조

그룹 필터링

[root@localhost ~] # echo "glad" >> test.txt

[root@localhost ~]# egrep "(la|oo)" test.txt

good

goood
glad



( ) 이전 일치 부분 참조; 괄호를 사용하면 첫 번째 대괄호의 내용이 나중에 1로 출력될 수 있습니다.

[root@localhost tmp]# ifconfig |sed -rn 's#.*addr:(.*)(B.*)$#1#gp'
192.168.4.27

5.
메타 문자

5.1, b: 단어 경계 일치 [root@localhost tmp]# cat 테스트                                                                                              test

do

[root@localhost tmp]# grep "bdo" test

do
does

doxy
[ root@localhost tmp]# grep "bdoes" test
does
[root@localhost tmp]# grep "bdob" test
do
[root@localhost tmp]#


5.2 B: 단어가 아닌 경계를 반대 방향으로 일치시킵니다. b


[root@localhost tmp]# grep "doB" test
does
doxy
agdoeg
[ root@localhost tmp]# grep "dob" test

do
[root@localhost tmp]#

5.3, d: 숫자 문자 일치, [0-9]

5.4에 해당, D: 숫자가 아닌 문자 일치, [^0-9]

5.5에 해당, w: 문자 및 숫자 일치, 밑줄, [A-Za-z0-9_]에 해당

메타 문자가 많기 때문에 여기에 모두 나열하지는 않겠습니다

사례: 간소화된 시작

[root@localhost ~]# chkconfig --list | egrep -v "crond|network|rsyslog|sshd|sysstat" | awk '{print "chkconfig",$1,"off"}'|bash

이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 그리고 앞으로 더 많은 내용이 준비되어 있습니다. PHP 중국어 웹사이트의 다른 관련 기사에도 주목해 주세요!

추천 도서:

JS 문자열 방법을 사용하는 단계에 대한 자세한 설명

JS 배열 방법을 사용하는 단계에 대한 자세한 설명

위 내용은 Linux에서 정규식 사용에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.