역참조 없이 Go에서 반복 문자를 일치시키는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-10-25 11:02:30
원래의
338명이 탐색했습니다.

How to Match Repeating Characters in Go Without Backreferences?

Go에서 정규 표현식을 사용하여 반복되는 문자를 일치시키는 방법은 무엇입니까?

이 기사에서는 다음과 같은 문자를 일치시키는 문제를 다룰 것입니다. Go에서 정규 표현식을 사용하여 두 번 반복합니다. 이 작업은 단순히 역참조를 사용하여 반복 문자와 일치시킬 수 있는 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의 대안

To 이 제한 사항을 해결하려면 다음 대안을 고려하십시오.

  • 호환되는 정규식 라이브러리 사용: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿