Implementieren eines negativen Satzes in Regex für Go
Der bereitgestellte reguläre Ausdruck zielt darauf ab, Dateinamen zu erfassen, die nicht auf bestimmte Dateierweiterungen enden (z. B. , htm, html, class, js). Allerdings führt die Implementierung in Go unter Verwendung des Regexp-Pakets zu anderen Ergebnissen als Online-Regex-Parser.
Diese Diskrepanz entsteht, weil die RE2-Regex-Engine der Go-Standardbibliothek keine negativen Lookaheads unterstützt (d. h. den in der Go-Standardbibliothek verwendeten ?!-Operator). ursprünglicher Ausdruck). Daher können Zeichenfolgen, die mit den angegebenen Dateierweiterungen enden, nicht ausgeschlossen werden.
Um das Verhalten des Online-Regex-Parsers zu reproduzieren, können Sie die folgenden Ansätze in Betracht ziehen:
<code class="go">re := regexp.MustCompile(`^(.*\.(?!(htm|html|class|js)$))([^.]*)$`)</code>
<code class="go">re := regexp.MustCompile(`^(.*?)(?<!\.(htm|html|class|js)$)`)</code>
<code class="go">re := regexp.MustCompile(`.\w{3}$`)</code>
Beachten Sie, dass diese Ausdrücke zu unterschiedlichen Ergebnissen führen können, da sie die Logik auf unterschiedliche Weise implementieren. Es ist wichtig, den Ansatz zu wählen, der am besten zu Ihrem Anwendungsfall passt.
Das obige ist der detaillierte Inhalt vonSo implementieren Sie einen negativen Satz in Regex für Go: Eine Anleitung zur Vermeidung unerwarteter Ergebnisse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!