ホームページ >バックエンド開発 >Golang >regexp パッケージ内の置換操作に焦点を当てる

regexp パッケージ内の置換操作に焦点を当てる

PHPz
PHPzオリジナル
2023-04-05 09:09:02743ブラウズ

Go 言語では、regexp パッケージが正規表現のサポートを提供します。正規表現は、文字列を照合および操作するための一連のルールを定義することにより、文字列パターンを記述するためのツールです。この記事では、正規表現パッケージでの置換操作に焦点を当てます。

正規表現パッケージの置換操作では、主に ReplaceAllString と ReplaceAllFunc の 2 つの関数を使用します。これらはすべて、指定された文字列を置換し、置換後の新しい文字列を返すことができます。

ReplaceAllString 関数の基本構文は次のとおりです。

func ReplaceAllString(src, pattern, replace string) string

このうち、src は置換対象の文字列、pattern は検索用の正規表現、replace は置換対象の文字列を表します。交換されました。例は次のとおりです:

package main

import (
    "fmt"
    "regexp"
)

func main() {
    src := "Hello, world! Today is 2021-06-30."
    pattern := `\d{4}-\d{2}-\d{2}`
    replace := "tomorrow"
    
    newStr := regexp.MustCompile(pattern).ReplaceAllString(src, replace)
    fmt.Println(newStr)
}

実行結果は次のとおりです:

Hello, world! Today is tomorrow.

上の例では、\d{4}-\d{2}-\d{ を使用しました。 2}検索用の正規表現として、この正規表現は 2021-06-30 などの日付形式に一致する文字列を表します。 ReplaceAllString関数を呼び出して、正規表現と一致する部分を「tomorrow」に置き換えます。

ReplaceAllString 関数に加えて、関数を置換値として使用できる、より強力な関数 ReplaceAllFunc もあり、一致したコンテンツに基づいて置換文字列を生成できます。 ReplaceAllFunc 関数の基本構文は次のとおりです。

func ReplaceAllFunc(src string, re *Regexp, repl func([]byte) []byte) string

このうち、src は置換対象の文字列、re はコンパイルされた正規表現、repl は置換文字列を生成する関数です。この関数は、一致したコンテンツを表す []byte 型のパラメータを受け取り、置換されたコンテンツを表す []byte 型の結果を返します。

次は、ReplaceAllFunc を使用して置換を実装する関数を示すサンプル コードです:

package main

import (
    "fmt"
    "regexp"
)

func main() {
    src := "Hello, world! Today is 2021-06-30."
    pattern := `\d{4}-\d{2}-\d{2}`
    
    newStr := regexp.MustCompile(pattern).ReplaceAllFunc([]byte(src), func(matched []byte) []byte {
        // 匹配到的内容为matched
        return []byte("tomorrow")
    })
    
    fmt.Println(string(newStr))
}

実行結果も次のとおりです:

Hello, world! Today is tomorrow.

上記のコードでは、内容と一致する repl関数に関数パラメータとして渡され、戻り値が置換結果として使用されます。ここで、関数は固定文字列「tomorrow」を直接返します。

置換する場合、置換時に元の大文字と小文字を保持する、置換時に一致結果に含まれる部分文字列を抽出するなど、高度な機能が必要になる場合があります。 regexp パッケージは、さまざまな置換要件を柔軟に実装するための関連機能と構造を提供します。

つまり、regexp パッケージは、置換演算が最も一般的に使用される関数の 1 つである強力な正規表現サポートを提供します。この記事の導入により、読者は正規表現パッケージの置換演算の基本的な方法を習得し、実際のニーズに応じて柔軟に使用できるようになったと思います。

以上がregexp パッケージ内の置換操作に焦点を当てるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。