Heim >Web-Frontend >js-Tutorial >Ausführliche Erläuterung der Verwendung regulärer Ausdrücke unter Linux

Ausführliche Erläuterung der Verwendung regulärer Ausdrücke unter Linux

php中世界最好的语言
php中世界最好的语言Original
2018-05-25 10:14:521748Durchsuche

Dieses Mal werde ich Ihnen die Verwendung von regulären Ausdrücken unter Linux ausführlich erklären. Was sind die Vorsichtsmaßnahmen bei der Verwendung regulärer Ausdrücke unter Linux? Schauen Sie mal rein.

1. Zusammensetzung

Gewöhnliche Zeichen: gewöhnliche Zeichenfolgen, keine besondere Bedeutung
Sonderzeichen: haben eine besondere Bedeutung in regulären Ausdrücken Die Bedeutung von
Gemeinsame Metazeichen in regulären Ausdrücken [Sonderzeichen]

2. Metazeichen in POSIX BRE [Basic] und ERE [Extended]

: Wird normalerweise verwendet um die Sonderbedeutung nachfolgender Zeichen ein- oder auszuschalten, z. B. (...) [Es handelt sich um ein Escape-Zeichen, das die Sonderbedeutung des Symbols entfernt, (), {} usw. haben in der Shell eine Sonderbedeutung]. und .:

[root@localhost ~]# cat -n test.txt

1 gd
2 god
3
4 good
5 goood
6 goad
7
8 gboad

2.1, .: Übereinstimmung mit jedem einzelnen Zeichen (außer null, das nicht leer sein darf)

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

1: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, : Entspricht dem vorhergehenden Zeichen beliebig oft, z. B. o, das kein o, ein o oder mehrere o sein kann

[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 kann weggelassen werden, das g vor o muss übereinstimmen]
1:gd
2:god
4 : gut
5:goood
6:goad
8:gboad
9:gbad
11:kgbad

*2.3, .: Entspricht jedem Zeichen ( match all), kann leer sein**

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

1:gd
2:god
3 :
4:gut
5:gut
6:goad
7:
8:gboad
9:gbad
10:pbad
11:kgbad
12:poad
[root@localhost ~]# grep -n "go.*" test.txt
2:god
4:good
5:goood
6:goad
[root@localhost ~]# grep -n "po.*" test.txt
12:poad
[root@localhost ~]# echo "pgoad" >>test.txt
[root@localhost ~]# grep -n "go.*" test.txt [Jedes Zeichen existiert nach der Übereinstimmung mit go, kann leer sein]
2:god
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, ^: Passen Sie den folgenden regulären Ausdruck an, mit .. .beginnt mit

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

root:x:0:0:root:/root:/bin/bash
[root@localhost tmp]#

2.5, $: Entspricht dem unmittelbar vorhergehenden regulären Ausdruck, der mit ... endet

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

root:x:0:0:root:/root:/bin/bash
[root@localhost tmp]#
^ $: bedeutet a Leerzeile
„#|^$“: Entspricht Kommentarzeilen und Leerzeilen, die mit # beginnen

2.6, []: Entspricht einem beliebigen Zeichen in eckigen Klammern

(z als [sS], entspricht s oder entspricht S), wobei ein Bindestrich (-) verwendet werden kann, um den Bereich der Bindestriche anzugeben (z. B. [(0-9)], entspricht jedem Zeichen von 0-9) ; -9] Wenn das ^-Symbol an der ersten Position der eckigen Klammer erscheint, bedeutet dies, dass es mit einem beliebigen Zeichen übereinstimmt, das nicht in der Liste enthalten ist.

[root@localhost tmp]# cat hosts
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}' hosts
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}$' hosts
192.168.200.1
192.168.200.3
[root@localhost tmp]#

2.7,? : Entspricht null oder mehr Malen des vorherigen Zeichens

[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)?"
do
does
doxy
[root@localhost tmp]#

3. Zeichen nur in POSIX BRE (Basic Regular)

{n,m}: Intervallausdruck, der mit dem einzelnen Zeichen übereinstimmt, bevor es [wiederholt, das folgende einzelne Zeichen wie https{0,1} wiederholt, d. h. s 0-1 Mal wiederholt. {n} bezieht sich auf eine n-fache Übereinstimmung; {n,m} bezieht sich auf eine n- bis m-fache Übereinstimmung, {n,} bezieht sich auf eine mindestens n-fache Übereinstimmung und {,m} entspricht höchstens m-maliger Übereinstimmung. [Escape-Zeichen]

4. Zeichen nur in POSIX ERE (Extended Regular)

4.1: Dasselbe wie bei BRE die gleiche Funktion

[root@localhost tmp]# grep -E '^([0-9]{1,3}.){3}[0-9]{1,3 } $' hosts
192.168.200.1
192.168.200.3

4.2. +: Übereinstimmung mit einem oder mehreren Malen des vorherigen regulären Ausdrucks

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

4.3, |: Zeigt Übereinstimmung an mehrere Zeichenfolgen [oder Beziehung]

[root@localhost ~]# grep -E "3306|1521" /etc/services
mysql 3306/tcp # MySQL
mysql 3306/udp # MySQL
ncube-lm 1521/tcp # nCube License Manager
ncube-lm 15 21/udp                           # nCube License Manager
[root@localhost ~]#

4.4, ( ): Gruppenfilterung, Rückwärtsreferenz

Gruppenfilterung

[root@localhost ~]# echo "glad" > > 🎜>[root@localhost ~]# egrep "(la|oo)" test.txt
gut
gut
froh

() nach Direkter Verweis; Der passende Teil verwendet Klammern. Der Inhalt der ersten Klammer kann im späteren Teil als 1 ausgegeben werden.

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

192.168.4.27

5. Reguläre Ausdrücke Metazeichen

5. b: Passen Sie eine Wortgrenze an

[root@localhost tmp]# cat test

do
does
doxy
agdoeg
[root@localhost tmp]# grep "dob" 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]#

B: Übereinstimmung mit Nicht-Wort-Grenzen, im Gegensatz zu b

[root@localhost tmp]# grep „doB“ test

macht
doxy
agdoeg
[root@localhost tmp]# grep „dob“ test
macht
[root@localhost tmp]#

5.3. d: Entspricht einem numerischen Zeichen, äquivalent zu [^0-9]

5.4 D: Entspricht einem nicht numerischen Zeichen, äquivalent zu [^0-9]

5.5, w: Entspricht Buchstaben, Zahlen und Unterstrichen, entspricht [A-Za-z0-9_]

Es gibt viele Metazeichen, daher werde ich sie hier nicht einzeln auflisten

Fall: Optimierter Start

[root@localhost ~]# chkconfig --list| ", $1,"off"}'|bash

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln zu PHP Chinesische Website!

Empfohlene Lektüre:

Detaillierte Erläuterung der Schritte zur Verwendung der JS-String-Methode

Detaillierte Erläuterung der Schritte zur Verwenden Sie die JS-Array-Methode

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Verwendung regulärer Ausdrücke unter Linux. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn