>백엔드 개발 >Golang >Go\의 InstallAllString 함수는 대체 문자열의 역참조 및 변수 참조를 어떻게 처리합니까?

Go\의 InstallAllString 함수는 대체 문자열의 역참조 및 변수 참조를 어떻게 처리합니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-01 23:34:29295검색

How does Go's ReplaceAllString function handle backreferences and variable references in replacement strings?

Go ApplyAllString Decoded

Go의 InstallAllString 함수를 사용하면 주어진 입력 문자열 내에서 일치하는 하위 문자열을 바꿀 수 있습니다. 다음 코드 조각을 고려하세요.

<code class="go">re := regexp.MustCompile("a(x*)b")
fmt.Println(re.ReplaceAllString("-ab-axxb-", "T"))
fmt.Println(re.ReplaceAllString("-ab-axxb-", ""))
fmt.Println(re.ReplaceAllString("-ab-axxb-", "W"))
fmt.Println(re.ReplaceAllString("-ab-axxb-", "W"))</code>

출력:

-T-T-
--xx-
---
-W-xxW-

설명:

2 . -ab-axxb- $1로 대체됨(RemoveAllString 예)

일치하는 하위 문자열을 정규식의 첫 번째 캡처링 그룹 내용으로 대체합니다. 이 경우 캡처 그룹은 a와 b 사이의 문자와 일치하므로 출력은 -xx-입니다.

3. -ab-axxb- $1W로 대체(RemoveAllString 예)

이 대체는 $1 역참조를 사용하여 일치하는 하위 문자열을 식별하지만 여기에 "W"가 추가됩니다. 그러나 정규식에는 이름이 1W인 캡처링 그룹이 없으므로 $1W 참조는 비어 있습니다. 결과적으로 출력은 ---.

4입니다. -ab-axxb-는 ${1}W로 대체되었습니다(RemoveAllString 예)

이 대체는 이전 것과 유사하지만 역참조($1) 주위에 중괄호를 사용합니다. Expand 설명서에 따르면 중괄호는 역참조가 아닌 변수 참조를 나타내는 데 사용됩니다. 1은 정규식의 변수가 아니므로 출력은 -W-xxW-입니다.

위 내용은 Go의 InstallAllString 함수는 대체 문자열의 역참조 및 변수 참조를 어떻게 처리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.