>  기사  >  백엔드 개발  >  Go 정규식에서 Lookaround를 해결하는 방법은 무엇입니까?

Go 정규식에서 Lookaround를 해결하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-12 19:47:02968검색

How to Workaround Lookarounds in Go Regular Expressions?

정규식 구문 분석 오류: 유효하지 않거나 지원되지 않는 Perl 구문(?!

Go에서 정규식을 컴파일하려고 하면 사용자에게 다음 구문 분석 오류가 발생할 수 있습니다.

error parsing regexp: invalid or unsupported Perl syntax: (?!

이 오류는 일반적으로 에서 지원되지 않는 둘러보기 연산자(?!...)를 사용하려고 할 때 발생합니다. Go의 정규식 구문.

탐색 이해

탐색은 패턴이 바로 뒤에 없거나 다른 특정 패턴이 선행하지 않는 경우에만 패턴을 일치시키는 데 사용되는 특수한 유형의 정규식 연산자입니다. , (?!는 주어진 문자열이 "On" 텍스트로 시작하지 않는지 확인하는 데 사용됩니다.

Go Regexp 해결 방법

Go는 둘러보기를 지원하지 않으므로 사용 가능한 몇 가지 해결 방법이 있습니다.

별도의 정규식 사용

한 가지 접근 방식은 두 개의 별도 정규식을 사용하는 것입니다. :

nonOnRegex := regexp.MustCompile("^(?!On.*On\s.+?wrote:)(On\s(.+?)wrote:)$")
onOnRegex := regexp.MustCompile("^On.*On\s.+?wrote:")

그런 다음 nonOnRegex가 문자열과 일치하는지 확인할 수 있습니다. onOnRegex는 원하는 결과를 결정하는 데 일치하지 않습니다.

선택적 캡처 그룹 사용

또 다른 해결 방법은 선택적 캡처 그룹을 사용하는 것입니다.

regex := regexp.MustCompile(`^On(.*On)?\s.+?wrote:`)

이 정규식을 사용하여 문자열을 일치시킨 후 첫 번째 캡처링 그룹이 존재하고 "On"으로 끝나는지 확인할 수 있습니다. 그렇다면 false를 반환하고 그렇지 않으면 true를 반환합니다.

이러한 해결 방법 중 하나를 구현하면 Go의 정규식 구문에서 탐색 기능을 효과적으로 복제할 수 있습니다.

위 내용은 Go 정규식에서 Lookaround를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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