Fortgeschrittenes Tutorial zu regulären Ausdrücken in der Go-Sprache: Verwendung von Assertionsbedingungen

WBOY
Freigeben: 2023-07-13 23:49:39
Original
1136 Leute haben es durchsucht

Erweitertes Tutorial zu regulären Ausdrücken in der Go-Sprache: Verwendung von Assertionsbedingungen

In der Go-Sprache sind reguläre Ausdrücke ein leistungsstarkes und flexibles Tool zum Textabgleich. Es kann zum Suchen, Extrahieren und Ersetzen von Text verwendet werden. Im vorherigen Tutorial haben wir die Grundlagen regulärer Ausdrücke erlernt, einschließlich Zeichenklassen, Quantoren und Backslash-Escapezeichen. Heute werfen wir einen genaueren Blick auf eine der fortgeschritteneren Techniken regulärer Ausdrücke, nämlich Assertionsbedingungen.

In regulären Ausdrücken sind Behauptungsbedingungen (Lookaround Assertions) eine nicht erfassende Übereinstimmung, die verwendet wird, um zu bestimmen, ob eine übereinstimmende Position bestimmte Bedingungen erfüllt. Es gibt zwei Arten von Behauptungsbedingungen: positive Behauptung (Positive Lookahead) und negative Behauptung (Negative Lookahead). Positive Behauptungen werden verwendet, um Positionen abzugleichen, die bestimmte Bedingungen erfüllen, während negative Behauptungen verwendet werden, um Positionen abzugleichen, die bestimmte Bedingungen nicht erfüllen.

Hier ist ein Beispielcode, der Assertionsbedingungen verwendet:

package main

import (
    "fmt"
    "regexp"
)

func main() {
    str := "hello, world! Go is awesome."

    // 正向断言示例:匹配含有"Go"的单词
    re1 := regexp.MustCompile(`w+(?=Go)`)
    fmt.Println(re1.FindAllString(str, -1)) // Output: [Go]

    // 正向断言示例:匹配含有"[aeiou]"之后的字母
    re2 := regexp.MustCompile(`[aeiou](?=[a-z])`)
    fmt.Println(re2.FindAllString(str, -1)) // Output: [o, o, i, i, a]

    // 负向断言示例:匹配不含有"world"的单词
    re3 := regexp.MustCompile(`w+(?<!world)`)
    fmt.Println(re3.FindAllString(str, -1)) // Output: [hello,, Go, is, awesome.]

    // 负向断言示例:匹配不含有"[123]"之后的数字
    re4 := regexp.MustCompile(`d(?![123])`)
    fmt.Println(re4.FindAllString(str, -1)) // Output: [4]
}
Nach dem Login kopieren

In diesem Beispielcode verwenden wir die Funktion regexp.MustCompile, um den regulären Ausdruck in einen *regexp.Regexp zu kompilieren >Objekt. Anschließend können wir die Methode FindAllString verwenden, um alle Übereinstimmungen des regulären Ausdrucks in einer bestimmten Zeichenfolge zu finden. regexp.MustCompile函数将正则表达式编译为一个*regexp.Regexp对象。然后,我们可以使用FindAllString方法在给定的字符串中查找符合正则表达式的所有匹配。

示例中的第一个正向断言的正则表达式是w+(?=Go)。其中,是一个单词边界匹配元字符,w+表示匹配一个或多个字母、数字或下划线,(?=Go)表示向前查找,匹配后面紧跟着"Go"的单词。执行这个正则表达式后,我们得到了字符串中含有"Go"的单词。

第二个正向断言的正则表达式是[aeiou](?=[a-z])。其中,[aeiou]表示匹配一个元音字母,(?=[a-z])表示向前查找,匹配后面紧跟着一个小写字母的元音字母。执行这个正则表达式后,我们得到了字符串中含有"[aeiou]"之后的字母。

第一个负向断言的正则表达式是w+(?<!world)。其中,(?<!world)表示向前否定查找,匹配不以"world"结尾的单词。执行这个正则表达式后,我们得到了字符串中不含有"world"的单词。

第二个负向断言的正则表达式是d(?![123])。其中,d表示匹配一个数字,(?![123])表示向前否定查找,匹配不以"[123]"结尾的数字。执行这个正则表达式后,我们得到了字符串中不含有"[123]"之后的数字。

通过这些示例代码,你应该对如何使用断言条件有了基本的了解。当你需要根据特定的条件来匹配文本时,断言条件将是非常有帮助的工具。只要记住在Go语言中,正向断言是使用(?=pattern)语法,而负向断言则是使用(?<!pattern)

Der erste reguläre Ausdruck für positive Behauptungen im Beispiel ist w+(?=Go ). Unter diesen ist ein Wortgrenzen-Matching-Metazeichen, w+ bedeutet Übereinstimmung mit einem oder mehreren Buchstaben, Zahlen oder Unterstrichen, (?=Go ) bedeutet Suche vorwärts, passende Wörter gefolgt von „Los“. Nachdem wir diesen regulären Ausdruck ausgeführt haben, erhalten wir die Wörter, die „Go“ in der Zeichenfolge enthalten.

Der zweite reguläre Ausdruck für positive Behauptungen ist [aeiou](?=[a-z]). Unter diesen bedeutet [aeiou] die Übereinstimmung mit einem Vokalbuchstaben, (?=[a-z]) bedeutet die Suche nach vorne und die Übereinstimmung mit einem Vokalbuchstaben, gefolgt von einem Kleinbuchstaben. Nachdem wir diesen regulären Ausdruck ausgeführt haben, erhalten wir die Buchstaben nach „[aeiou]“ im String. 🎜🎜Der erste reguläre Ausdruck für negative Behauptungen ist w+ (?<!world). Unter diesen stellt (?<!world) eine negative Vorwärtssuche dar, bei der nach Wörtern gesucht wird, die nicht mit „world“ enden. Nachdem wir diesen regulären Ausdruck ausgeführt haben, erhalten wir die Wörter, die „world“ nicht in der Zeichenfolge enthalten. 🎜🎜Der zweite reguläre Ausdruck für negative Behauptungen ist d(?![123]). Unter diesen bedeutet d das Abgleichen einer Zahl und (?![123]) die Vorwärts-Negativsuche, bei der Zahlen abgeglichen werden, die nicht mit „[123]“ enden. Nachdem wir diesen regulären Ausdruck ausgeführt haben, stellen wir fest, dass die Zeichenfolge nach „[123]“ keine Zahlen enthält. 🎜🎜Mit diesen Beispielcodes sollten Sie über ein grundlegendes Verständnis für die Verwendung von Assertionsbedingungen verfügen. Assert-Bedingungen sind ein sehr hilfreiches Werkzeug, wenn Sie Text basierend auf bestimmten Bedingungen zuordnen müssen. Denken Sie daran, dass in der Go-Sprache positive Behauptungen die Syntax (?=pattern) verwenden, während negative Behauptungen die Syntax (?<!pattern) verwenden sie flexibel. 🎜🎜Ich hoffe, dieses Tutorial kann Ihnen helfen, Assertionsbedingungen in regulären Ausdrücken besser zu verstehen und anzuwenden. Im nächsten Tutorial werden wir weiterhin andere fortgeschrittene Techniken regulärer Ausdrücke in der Go-Sprache vorstellen. Bleiben Sie dran! 🎜

Das obige ist der detaillierte Inhalt vonFortgeschrittenes Tutorial zu regulären Ausdrücken in der Go-Sprache: Verwendung von Assertionsbedingungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage