> 백엔드 개발 > Golang > Go의 Regexp 패키지를 사용하여 문자열에서 중괄호로 묶인 모든 문자열을 어떻게 추출할 수 있나요?

Go의 Regexp 패키지를 사용하여 문자열에서 중괄호로 묶인 모든 문자열을 어떻게 추출할 수 있나요?

Linda Hamilton
풀어 주다: 2025-01-04 04:21:40
원래의
349명이 탐색했습니다.

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

Go에서 Regex로 문자열 일치 찾기

이 문서에서는 지정된 문자열에 대해 지정된 정규식과 일치하는 모든 항목을 검색하는 작업을 살펴봅니다. 샘플 문자열을 검사하고 Go의 regexp 패키지를 사용하여 중괄호로 묶인 문자열을 캡처하는 솔루션을 구현하겠습니다.

문제 설명

주어진 문자열:

{city}, {state} {zip}
로그인 후 복사

우리의 목표는 curly 사이의 모든 문자열 일치를 포함하는 배열 또는 슬라이스를 반환하는 것입니다.

솔루션

이를 달성하기 위해 정규식을 활용하여 원하는 패턴을 정의할 수 있습니다. 하지만 초기 시도와 비교하여 몇 가지 주요 수정 사항이 있습니다.

먼저 Go에서는 필요하지 않은 정규식 구분 기호("/")를 제거합니다. 둘째, 정규식 패턴을 정의하기 위해 원시 문자열 리터럴(백틱`으로 표시됨)을 사용합니다. 이를 통해 단일 백슬래시()를 사용하여 정규식 메타 문자를 이스케이프 처리할 수 있습니다. 마지막으로, 개별 값을 캡처할 필요가 없으므로 정규식 패턴을 단순화하여 괄호를 캡처하지 않고 중괄호 사이의 문자열을 일치시킬 수 있습니다.

업데이트된 코드 버전은 다음과 같습니다.

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

이 코드는 다음과 일치하는 배열을 반환합니다.

["{city}", "{state}", "{zip}"]
로그인 후 복사

다이빙 Deeper

중괄호 안의 값만 추출하려면 캡처 괄호를 포함하는 약간 수정된 정규식 패턴과 함께 FindAllStringSubmatch를 사용할 수 있습니다.

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

이 패턴에서, ([^{}]*)는 중괄호를 제외한 모든 문자와 일치하는 캡처 그룹입니다. FindAllStringSubmatch를 사용하면 각 일치 항목에 대한 부분 일치 배열이 반환됩니다. 그런 다음 이러한 하위 일치 항목을 반복하여 괄호 안의 값을 얻을 수 있습니다.

정규식 세부 정보

  • { - 리터럴 왼쪽 중괄호
  • ([^{}]*) - 곱슬머리를 제외하고 0개 이상의 문자와 일치하는 그룹 캡처 중괄호
  • } - 문자 그대로의 오른쪽 중괄호

위 내용은 Go의 Regexp 패키지를 사용하여 문자열에서 중괄호로 묶인 모든 문자열을 어떻게 추출할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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