ホームページ  >  記事  >  バックエンド開発  >  Go で後方参照なしで繰り返し文字を照合するにはどうすればよいですか?

Go で後方参照なしで繰り返し文字を照合するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-25 11:02:30266ブラウズ

How to Match Repeating Characters in Go Without Backreferences?

Go で正規表現を使用して繰り返し文字を一致させるには?

この記事では、次のような文字を一致させるという課題に取り組みます。 Go の正規表現を使用して 2 回繰り返します。このタスクは、JavaScript などの他の正規表現構文では簡単な場合が多く、後方参照を使用して繰り返し文字と一致させるだけです。ただし、Go のネイティブ正規表現エンジン (re2) は後方参照をサポートしていません。

Go の re2 では後方参照を使用できません

提供されている JavaScript の例では、後方参照を利用してキャプチャを行っています。繰り返し文字:

<code class="javascript">var str = "abccdeff";
var r = /([a-z]{1})/g
console.log(str.match(r))</code>

このパターンは、後方参照のサポートがないため、Go の re2 では失敗します。

Go の re2 の代替

この制限に対処するには、次の代替案を検討してください:

  • 互換性のある正規表現ライブラリを使用します: glenn-brown/golang-pkg-pcre などのライブラリは、後方参照を含む高度な機能を提供し、互換性があります。 Go の構文を使用します。
  • カスタム ループを実装します。 正規表現に依存せずに文字の繰り返しを手動で分析するループベースのソリューションを開発します。

カスタム ループ ソリューションの例

<code class="go">package main

import (
    "fmt"
    "regexp"
)

func main() {
    str := "abccdeff"

    // Find and print repeating characters without using regex
    for i, ch := range str {
        if i+1 < len(str) && ch == rune(str[i+1]) {
            fmt.Printf("Found repeated character: %c\n", ch)
        }
    }
}</code>

以上がGo で後方参照なしで繰り返し文字を照合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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