Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erläuterung der Verwendung regulärer Metazeichen

Detaillierte Erläuterung der Verwendung regulärer Metazeichen

php中世界最好的语言
php中世界最好的语言Original
2018-03-30 09:49:431736Durchsuche

Dieses Mal erkläre ich Ihnen ausführlich die Verwendung regulärer Metazeichen. Welche Vorsichtsmaßnahmen gibt es bei der Verwendung regulärer Metazeichen?

Hinweis: In allen Beispielen ist das Übereinstimmungsergebnis des regulären Ausdrucks zwischen [ und ] im Quelltext enthalten, einige Beispiele werden mit Java implementiert. Wenn es sich um die Verwendung regulärer Ausdrücke in Java selbst handelt, wird dies an entsprechender Stelle erläutert. Alle Java-Beispiele werden unter JDK1.6.0_13 getestet.

1. Escapen Sie die Sonderzeichen

Metazeichen sind Zeichen, die in regulären Ausdrücken eine besondere Bedeutung haben. Da Metazeichen in regulären Ausdrücken eine besondere Bedeutung haben, können diese Zeichen nicht zur Darstellung ihrer selbst verwendet werden. Sie können ein Metazeichen maskieren, indem Sie ihm einen Backslash voranstellen, sodass die resultierende Escape-Sequenz mit dem Zeichen selbst und nicht mit seiner speziellen Metazeichenbedeutung übereinstimmt. Wenn Sie beispielsweise mit [und] übereinstimmen möchten, müssen Sie es maskieren:

und
.

Um Metazeichen zu maskieren, müssen Sie das Schrägstrichzeichen verwenden, was bedeutet, dass das Zeichen selbst auch ein Metazeichen ist, das mit \ maskiert werden muss. Beispielsweise der passende Windows-Dateipfad.

2. Leerzeichen abgleichen

Metazeichen können grob in zwei Typen unterteilt werden: Einer wird zum Abgleichen von Text verwendet (z. B. .) und der andere ist normal Die Syntax des Ausdrucks erfordert dies (z. B. [und]).

Bei der Suche nach regulären Ausdrücken stoßen wir häufig auf Situationen, in denen wir nicht druckbare Leerzeichen im Originaltext finden müssen. Beispielsweise müssen wir möglicherweise alle Tabulatorzeichen finden, oder es ist schwierig, solche Zeichen direkt in einen regulären Ausdruck einzugeben. In diesem Fall können wir die unten aufgeführten Sonderzeichen verwenden :

b 回退(并删除)一个字符(Backspace键)
f 换页符
n 换行符
r 回车符
t 制表符(Tab键)
v 垂直制表符

Sehen wir uns ein Beispiel an, um Leerzeilen aus der Datei zu entfernen:

Text:

8 5 4 1 6 3 2 7 9
7 6 2 9 5 8 3 4 1
9 3 1 4 2 7 8 5 6

6 9 3 8 7 5 1 2 4
5 1 8 3 4 2 6 9 7
2 4 7 6 1 9 5 3 8

3 26 7 8 4 9 1 5
4 8 9 5 3 1 7 6 2
1 7 5 2 9 6 4 8 3

Regulärer Ausdruck: rnrn

Analyse: rn entspricht einer Kombination aus Wagenrücklauf und Zeilenvorschub, die in Windows als Text behandelt wird Betriebssystem Das End-Tag der Zeile. Bei einer Suche mit dem regulären Ausdruck rnrn werden zwei aufeinanderfolgende Zeilenende-Tags gefunden, bei denen es sich zufällig um Leerzeilen handelt.

Hinweis: Unix- und Linux-Betriebssysteme verwenden nur ein Zeilenumbruchzeichen, um eine Textzeile zu beenden. Mit anderen Worten: Um Leerzeilen in Unix- oder Linux-Systemen abzugleichen, verwenden Sie einfach nn, kein Hinzufügen erforderlich R. Der reguläre Ausdruck, der sowohl für Windows als auch für Unix/Linux gilt, sollte ein optionales r und ein übereinstimmendes n, also r?nr?n, enthalten, was in einem späteren Artikel besprochen wird.

Der Java-Code lautet wie folgt:

public static void matchBlankLine() throws Exception{
  BufferedReader br = new BufferedReader(new FileReader(new File("E:/九宫格.txt")));
  StringBuilder sb = new StringBuilder();
  char[] cbuf = new char[1024];
  int len = 0;
  while(br.ready() && (len = br.read(cbuf)) > 0){
    br.read(cbuf);
    sb.append(cbuf, 0, len);
  }
  String reg = "\r\n\r\n";
  System.out.println("原内容:\n" + sb.toString());
  System.out.println("处理后:-----------------------------");
  System.out.println(sb.toString().replaceAll(reg, "\r\n"));
}

Die laufenden Ergebnisse sind wie folgt:

原内容:
8 5 4 1 6 3 2 7 9
7 6 2 9 5 8 3 4 1
9 3 1 4 2 7 8 5 6
6 9 3 8 7 5 1 2 4
5 1 8 3 4 2 6 9 7
2 4 7 6 1 9 5 3 8
3 2 6 7 8 4 9 1 5
4 8 9 5 3 1 7 6 2
1 7 5 2 9 6 4 8 3
 
处理后:-----------------------------
8 5 4 1 6 3 2 7 9
7 6 2 9 5 8 3 4 1
9 3 1 4 2 7 8 5 6
6 9 3 8 7 5 1 2 4
5 1 8 3 4 2 6 9 7
2 4 7 6 1 9 5 3 8
3 2 6 7 8 4 9 1 5
4 8 9 5 3 1 7 6 2
1 7 5 2 9 6 4 8 3

3. Passen Sie bestimmte Zeichenkategorien an

Zeichensatz (Übereinstimmung mit einem von mehreren Zeichen) ist die häufigste Übereinstimmungsform, und einige häufig verwendete Zeichensätze können durch spezielle Metazeichen ersetzt werden. Diese Metazeichen stimmen mit einer bestimmten Klasse von Zeichen überein (Klassenmetazeichen sind nicht unbedingt erforderlich, da Sie eine bestimmte Zeichenklasse durch Auflisten der relevanten Zeichen nacheinander oder durch Definieren eines Zeichenintervalls abgleichen können, sondern sie verwenden Der konstruierte reguläre Ausdruck ist). prägnant und leicht verständlich und wird häufig in praktischen Anwendungen verwendet.

1. Zahlen und Nichtzahlen abgleichen

d Beliebige Zahl, entsprechend [0-9] oder [0123456789]
D Beliebige Nichtzahl, entspricht [^0-9] oder [^0123456789]

2. Ordnen Sie Buchstaben und Zahlen Nicht-Buchstaben und Zahlen zu.

Buchstaben (A-Z sind nicht größenabhängig). ) (Schreiben), Zahlen und Unterstriche sind ein häufig verwendeter Zeichensatz. Die folgenden Metazeichen können verwendet werden:

w Jeder Buchstabe (ohne Berücksichtigung der Groß-/Kleinschreibung), Zahlen und Unterstriche, äquivalent zu [0-9a -zA -Z_]
W Alle nicht-alphanumerischen Zeichen und Unterstriche, entsprechend [^0-9a-zA-Z_]

3. Passen Sie Leerzeichen und Nicht-Leerzeichen an

s Jedes Leerzeichen entspricht [fnrtv]
S Jedes Leerzeichen entspricht [^fnrtv]

Hinweis: Es gibt kein Backspace-Metazeichen b, das nicht enthalten ist s im Rahmen.

4. Hexadezimal- oder Oktalwerte abgleichen

Hex: angegeben mit dem Präfix x, zum Beispiel: x0A entspricht dem ASCII-Zeichen 10 (Neuzeilensymbol), seine Wirkung ist äquivalent zu n.
Oktal: Präfix verwenden

POSIX-Zeichen unterscheiden sich von den Metazeichen, die wir zuvor gesehen haben. Schauen wir uns ein Beispiel für die Verwendung regulärer Ausdrücke zum Anpassen von Farben auf Webseiten an:

Text: Hintergrundfarbe:#3636FF;height:30px;width:60px;">Test

Regulärer Ausdruck: #[[ :xdigit:]] [[:xdigit:]] [[:xdigit:]] [[:xdigit:]] [[:xdigit:]] [[:xdigit:]]

Ergebnis:< ;span style="background-color:【#3636FF】;height:30px;width:60px;">Test

Hinweis: Das verwendete Muster Hier beginnt mit [[ und endet mit ]], was zur Verwendung von POSIX-Zeichenklassen erforderlich ist und zwischen [: und:] eingeschlossen werden muss. Zeichen sind Teil der POSIX-Zeichenklasse selbst.

Die POSIX-Zeichendarstellung in Java ist nicht zwischen [: und :] enthalten, sondern beginnt mit p und ist zwischen { und } enthalten Gleichzeitig erhöht es p{ASCII}, wie unten gezeigt:

p{Alnum} 字母数字字符:[p{Alpha}p{Digit}]
p{Alpha} 字母字符:[p{Lower}p{Upper}]
p{ASCII} 所有 ASCII:[x00-x7F]
p{Blank} 空格或制表符:[ t]
p{Cntrl} 控制字符:[x00-x1Fx7F]
p{Digit} 十进制数字:[0-9]
p{Graph} 可见字符:[p{Alnum}p{Punct}]
p{Lower} 小写字母字符:[a-z]
p{Print} 可打印字符:[p{Graph}x20]
p{Punct} 标点符号:!"#$%&'()*+,-./:;<=>?@[]^_`{|}~
p{Space} 空白字符:[ tnx0Bfr]
p{Upper} 大写字母字符:[A-Z]
p{XDigit} 十六进制数字:[0-9a-fA-F]

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie auf der chinesischen PHP-Website. Weitere verwandte Artikel!

Empfohlene Lektüre:

Tutorial zum Positionsabgleich des Tutorials zu regulären Ausdrücken (mit Code)

JS-Passwortstärkekorrektur Überprüfen Sie regelmäßig Ausdruck (mit Code)

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung regulärer Metazeichen. 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