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를 사용하면 각 일치 항목에 대한 부분 일치 배열이 반환됩니다. 그런 다음 이러한 하위 일치 항목을 반복하여 괄호 안의 값을 얻을 수 있습니다.
정규식 세부 정보
위 내용은 Go의 Regexp 패키지를 사용하여 문자열에서 중괄호로 묶인 모든 문자열을 어떻게 추출할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!