「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Go で後方参照なしで繰り返し文字を照合するにはどうすればよいですか?

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

2024 年 11 月 19 日に公開
ブラウズ:827

How to Match Repeating Characters in Go Without Backreferences?

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

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

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

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

var str = "abccdeff";
var r = /([a-z]{1})\1/g
console.log(str.match(r))

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

Go の re2 の代替案

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

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

Example Customループ ソリューション

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 
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3