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

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

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-04 04:21:40365ブラウズ

How Can I Extract All Strings Enclosed in Curly Braces from a String Using Go's Regexp Package?

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

この記事では、指定された文字列に対する指定された正規表現の一致をすべて取得するタスクについて説明します。サンプル文字列を調べ、Go の正規表現パッケージを使用して中括弧で囲まれた文字列をキャプチャするソリューションを実装します。

問題ステートメント

指定された文字列:

{city}, {state} {zip}

私たちの目標は、curly 間の文字列の一致をすべて含む配列またはスライスを返すことです。 braces.

解決策

これを実現するには、正規表現を利用して目的のパターンを定義します。ただし、最初の試みと比較して、いくつかの重要な変更を加える必要があります。

まず、Go では不要な正規表現区切り文字 (「/」) を削除します。次に、生の文字列リテラル (バックティック ` で示される) を使用して正規表現パターンを定義します。これにより、単一のバックスラッシュ () を使用して正規表現メタ文字をエスケープできるようになります。最後に、個々の値を取得する必要がないため、括弧を取得せずに中かっこ間の文字列と一致する正規表現パターンを簡素化できます。

コードの更新バージョンは次のとおりです。

r := regexp.MustCompile(`{[^{}]*}`)
matches := r.FindAllString("{city}, {state} {zip}", -1)

このコードは次の配列を返します。一致:

["{city}", "{state}", "{zip}"]

Diving Deeper

中括弧内の値のみを抽出したい場合は、キャプチャを含むわずかに変更された正規表現パターンで FindAllStringSubmatch を使用できます。括弧:

r := regexp.MustCompile(`{([^{}]*)}`)
matches := r.FindAllStringSubmatch("{city}, {state} {zip}", -1)

このパターンでは、([^{}]*) は中括弧以外の任意の数の文字と一致するキャプチャ グループ。 FindAllStringSubmatch を使用すると、各一致の部分一致の配列が返されます。次に、これらの部分一致をループして括弧内の値を取得します。

正規表現の詳細

  • { - リテラル左中括弧
  • ([^{}]*) - 中字を除く 0 個以上の文字に一致するグループをキャプチャしますbraces
  • } - リテラルの右中括弧

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

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