ホームページ > バックエンド開発 > Golang > Go の `regexp` パッケージを使用して中括弧で囲まれた文字列の一致を抽出するにはどうすればよいですか?

Go の `regexp` パッケージを使用して中括弧で囲まれた文字列の一致を抽出するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-18 16:29:10
オリジナル
281 人が閲覧しました

How to Extract String Matches Enclosed in Curly Braces Using Go's `regexp` Package?

Go で正規表現を使用して一致する文字列を取得する

Go では、regexp パッケージにより、正規表現に基づいて文字列内の一致を検索する機能が提供されます。表現。このガイドでは、中括弧で囲まれた特定のセグメントを含む指定された文字列から一致の配列を抽出する方法を説明します。

問題:

次の内容を含む文字列があります。 pattern:

{city}, {state} {zip}
ログイン後にコピー

あなたの目標は、中括弧の間に現れるすべての部分文字列を保持する配列を取得することです。 regexp パッケージを使用しているにもかかわらず、目的の出力を達成するのに困難が生じています。

解決策:

この問題に対処するには、次の手順を検討してください。

  1. 正規表現区切り文字の削除: 正規表現を囲むスラッシュを削除します。 expression.
  2. Use Raw String Literals: バックティック `` で示される生の文字列リテラルを使用して正規表現を定義します。これにより、単一のバックスラッシュで正規表現メタ文字をエスケープできます。
  3. キャプチャ グループの削除: この場合、キャプチャ グループは{([^{}]*)} は中括弧間の文字列のみが必要なため不要です。したがって、簡略化されたパターン {[^}]*} を使用できます。

すべての一致を取得するには、FindAllString を使用します。

r := regexp.MustCompile(`{[^{}]*}`)
matches := r.FindAllString("{city}, {state} {zip}", -1)
ログイン後にコピー

カーリー間の部分のみをキャプチャするには中かっこの場合は、キャプチャを含むパターンで FindAllStringSubmatch を使用します。括弧:

r := regexp.MustCompile(`{([^{}]*)}`)
matches := r.FindAllStringSubmatch("{city}, {state} {zip}", -1)
for _, v := range matches {
    fmt.Println(v[1])
}
ログイン後にコピー

正規表現の内訳:

  • { - リテラルの開き中括弧と一致します。
  • {[^{}] *} - 中括弧を除くすべての文字をキャプチャし、それらをgroup.
  • ([^{}]*) - 上記と同様ですが、キャプチャされた部分はグループ 1 に割り当てられます。
  • } - リテラルの右中括弧と一致します。

以上がGo の `regexp` パッケージを使用して中括弧で囲まれた文字列の一致を抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート