検索
ホームページバックエンド開発GolangGo 言語の正規表現に関する高度なチュートリアル: ゼロ幅アサーションの使用方法

Go 言語の正規表現に関する高度なチュートリアル: ゼロ幅アサーションの使用方法

正規表現は、文字列内の特定のパターンのテキストを検索して置換するために使用できる強力なテキスト マッチング ツールです。 。 Go 言語の正規表現ライブラリは、特定のシナリオで非常に役立つゼロ幅アサーションなどの豊富な機能を提供します。この記事では、Go 言語でゼロ幅アサーションを使用して正規表現の柔軟性を向上させる方法を紹介します。

ゼロ幅アサーションは、文字を消費せずにサブパターン (または部分文字列) の位置を確認するために使用される特別な正規表現です。これは、テキスト自体を返さずに、特定の条件に一致するテキストを検索するのに役立ちます。 Go 言語では、ゼロ幅アサーションには、正のゼロ幅アサーション、負のゼロ幅アサーション、正のゼロ幅アサーション非キャプチャ グループ、および負のゼロ幅アサーション非キャプチャ グループの 4 種類があります。

Positive Lookahead アサーションは、特定の位置の背後に現れる特定のパターンを持つテキストを検索するために使用されます。その構文は (?=...) で、... は一致する必要があるパターンを表します。以下に例を示します。

package main

import (
    "fmt"
    "regexp"
)

func main() {
    str := "123abc456"
    pattern := `d(?=abc)`  // 匹配数字后面紧跟着"abc"的情况
    re := regexp.MustCompile(pattern)
    results := re.FindAllString(str, -1)
    fmt.Println(results)  // 输出:[1]
}

上記の例で照合したいのは、数字の後に「abc」、つまり数字「1」が続く場合です。ここでは前方ゼロ幅アサーションが使用されており、一致が成功した後に返される結果は数値「1」です。

負のゼロ幅アサーション (Negative Lookahead Assertion) は、特定の位置以降の特定のパターンに現れないテキストを検索します。その構文は (?!...) で、... は除外する必要があるパターンを表します。以下に例を示します。

package main

import (
    "fmt"
    "regexp"
)

func main() {
    str := "123abc456"
    pattern := `d(?!abc)`  // 匹配数字后面不跟着"abc"的情况
    re := regexp.MustCompile(pattern)
    results := re.FindAllString(str, -1)
    fmt.Println(results)  // 输出:[2 3]
}

上記の例で照合したいのは、数字の後に「abc」が続かない場合、つまり数字「2」と「3」です。ここでは負のゼロ幅アサーションが使用されており、一致が成功した後に返される結果は数値「2」と「3」です。

正のゼロ幅アサーション非キャプチャ グループ (Positive Lookahead Non-Capturing Group) と負のゼロ幅アサーション非キャプチャ グループ (Negative Lookahead Non-Capturing Group) は、構文が異なることを除き、同様に使用されます。 require (...) の外側に ?= または ?! を追加します。以下に例を示します。

package main

import (
    "fmt"
    "regexp"
)

func main() {
    str := "abc123xyz"
    pattern := `(?i:[a-z]+(?=d))`  // 匹配小写字母后面紧跟着数字的情况
    re := regexp.MustCompile(pattern)
    results := re.FindAllString(str, -1)
    fmt.Println(results)  // 输出:[abc]
}

上記の例では、小文字の後に数字が続く場合、つまり「abc」を照合する必要があります。ここでは、前方ゼロ幅アサーション非キャプチャ グループが使用されており、一致が成功した後に返される結果は「abc」です。

非キャプチャ グループの負のゼロ幅アサーションでも、構文 (?i:...) を使用します。(...) で除外する必要があることを追加するだけです。 モード。以下に例を示します。

package main

import (
    "fmt"
    "regexp"
)

func main() {
    str := "abc123XYZ"
    pattern := `(?i:[a-z]+(?!123))`  // 匹配小写字母后面不跟着"123"的情况
    re := regexp.MustCompile(pattern)
    results := re.FindAllString(str, -1)
    fmt.Println(results)  // 输出:[abc]
}

上記の例で照合したいのは、小文字の後に「123」が続かない場合、つまり「abc」です。ここでは、負のゼロ幅アサーション非キャプチャ グループが使用されており、一致が成功した後に返される結果は「abc」です。

ゼロ幅アサーションを使用すると、正規表現の機能を拡張して、より正確なテキスト マッチングを実現できます。正規表現を使用する場合、ゼロ幅アサーションを適切に使用するとコードを節約し、マッチング効率を向上させることができます。この記事が、Go 言語の正規表現によるゼロ幅アサーションの理解と使用に役立つことを願っています。

以上がGo 言語の正規表現に関する高度なチュートリアル: ゼロ幅アサーションの使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
マスタリングゴー文字列:「文字列」パッケージに深く潜るマスタリングゴー文字列:「文字列」パッケージに深く潜るMay 12, 2025 am 12:05 AM

テキストデータを処理するためのツールを提供し、基本的な文字列から高度な正規表現のマッチングにスプライシングするためのツールを提供するため、Goの「文字列」パッケージに注意する必要があります。 1)「文字列」パッケージは、パフォーマンスの問題を回避するために文字列をスプライスするために使用される結合関数など、効率的な文字列操作を提供します。 2)contensany関数などの高度な関数が含まれており、文字列に特定の文字セットが含まれているかどうかを確認します。 3)交換関数は、文字列のサブストリングを交換するために使用され、交換順序とケースの感度に注意を払う必要があります。 4)分割関数は、セパレーターに従って文字列を分割することができ、しばしば正規表現処理に使用されます。 5)使用するときは、パフォーマンスを考慮する必要があります。

Goの「エンコード/バイナリ」パッケージ:バイナリ操作のためのあなたの頼みGoの「エンコード/バイナリ」パッケージ:バイナリ操作のためのあなたの頼みMay 12, 2025 am 12:03 AM

「エンコード/バイナリ」パッケージを包みます

バイトスライス操作チュートリアル:「バイト」パッケージをマスターするバイトスライス操作チュートリアル:「バイト」パッケージをマスターするMay 12, 2025 am 12:02 AM

GOでBYTESパッケージをマスターすると、コードの効率と優雅さを向上させることができます。 1)バイナーズパッケージは、バイナリデータの解析、ネットワークプロトコルの処理、およびメモリ管理に不可欠です。 2)bytes.bufferを使用して、バイトスライスを徐々に構築します。 3)BYTESパッケージは、バイトスライスの検索、交換、およびセグメント化の関数を提供します。 4)BYTES.READERタイプは、特にI/O操作でのバイトスライスのデータを読み取るのに適しています。 5)BYTESパッケージは、GoのGarbage Collectorと協力して機能し、ビッグデータ処理の効率を向上させます。

「文字列」パッケージを使用して、GOの文字列を操作しますか?「文字列」パッケージを使用して、GOの文字列を操作しますか?May 12, 2025 am 12:01 AM

Goで「文字列」パッケージを使用して、文字列を操作できます。 1)文字列を使用して、文字列の両端で白文字を削除します。 2)文字列を使用して、指定された区切り文字に従って文字列をスライスに分割します。 3)文字列スライスを文字列から1つの文字列にマージします。 4)文字列を使用して、文字列に特定のサブストリングが含まれているかどうかを確認します。 5)文字列を使用して、グローバルな交換を実行します。使用するときは、パフォーマンスと潜在的な落とし穴に注意してください。

「バイト」パッケージを使用してGOのバイトスライスを操作する方法(ステップバイステップ)「バイト」パッケージを使用してGOのバイトスライスを操作する方法(ステップバイステップ)May 12, 2025 am 12:01 AM

検索、分割、結合、およびバッファリングを提供するために、ビートレスリックマニピュレーションのために強力に効果的に効果的に効果的に効果的です

エンコード/バイナリパッケージに移動:実用的な例エンコード/バイナリパッケージに移動:実用的な例May 10, 2025 am 12:16 AM

Encoding/BinaryPackageIngoisESSENTIALINTIONINTINENTINTIONMINARYDATA、functionStoreadAndAndAndAntainBothianAndlittle-EndianFormats.1)それを測定することを可能にします

BYTESパッケージに移動:バイトスライスのために知っておく必要がある必須関数BYTESパッケージに移動:バイトスライスのために知っておく必要がある必須関数May 10, 2025 am 12:11 AM

the Essentionalfunctionsingo'sbytespackathatuoneedtoknoware:1)bytes.indexforsedingwithinbyteslices、2)bytes.splitforparsingデータ、3)bytes.joinforconcatenatingslices、4)bytes.containsforcheckingsubslicepresence、および5)bytes.replaceallfordatatransformatio

Goの「文字列」パッケージの代替案は何ですか?Goの「文字列」パッケージの代替案は何ですか?May 10, 2025 am 12:09 AM

GoOfferSalternativeStotheStringspackageForstringmanipulation:1)gexppackageforxpatternmatching、2)thestrconvpackagefornumericonversions、and3)externalibrarislikeStrutilforspecializedoperations.theseptionscatertodiferentnedeeds、foredancernsyu

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境