„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie ordne ich sich wiederholende Zeichen in Go Without Backreferenzen zu?

Wie ordne ich sich wiederholende Zeichen in Go Without Backreferenzen zu?

Veröffentlicht am 19.11.2024
Durchsuche:958

How to Match Repeating Characters in Go Without Backreferences?

Wie passt man jedes sich wiederholende Zeichen mit regulären Ausdrücken in Go an?

In diesem Artikel befassen wir uns mit der Herausforderung, jedes Zeichen zu finden, das wird zweimal mit regulären Ausdrücken in Go wiederholt. Diese Aufgabe ist in anderen Regex-Syntaxen wie JavaScript oft unkompliziert, wo man einfach Rückverweise verwenden kann, um sich wiederholende Zeichen abzugleichen. Die native Engine für reguläre Ausdrücke von Go (re2) unterstützt jedoch keine Rückverweise.

Rückverweise können in Gos re2 nicht verwendet werden

Das bereitgestellte JavaScript-Beispiel nutzt Rückverweise zur Erfassung sich wiederholende Zeichen:

var str = "abccdeff";
var r = /([a-z]{1})\1/g
console.log(str.match(r))

Dieses Muster würde in Gos re2 aufgrund der fehlenden Rückreferenzunterstützung fehlschlagen.

Alternativen zu Gos re2

Um diese Einschränkung zu beheben, ziehen Sie die folgenden Alternativen in Betracht:

  • Verwenden Sie ein kompatibles Regex-Bibliothek: Bibliotheken wie glenn-brown/golang-pkg-pcre bieten erweiterte Funktionen, einschließlich Rückverweis, und sind mit der Syntax von Go kompatibel.
  • Implementieren Sie eine benutzerdefinierte Schleife: Entwickeln Sie eine Schleifenbasierte Lösung, die Zeichen manuell auf Wiederholungen analysiert, ohne sich darauf verlassen zu müssen regex.

Beispiel für eine benutzerdefinierte Schleifenlösung

package main

import (
    "fmt"
    "regexp"
)

func main() {
    str := "abccdeff"

    // Find and print repeating characters without using regex
    for i, ch := range str {
        if i 1 
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3