Go 정규 표현식에서 Lookaround를 어떻게 해결하나요?

Patricia Arquette
풀어 주다: 2024-11-24 11:30:16
원래의
942명이 탐색했습니다.

How to Work Around Lookarounds in Go Regular Expressions?

정규 표현식 구문 분석 오류: 잘못된 Perl 구문 - 문제 이해 및 해결 방법 찾기

정규 표현식 "^(? !On.*On\s. ?write:)(On\s(. ?)write:)$" Go에서 일반적인 오류가 발생했습니다. is:

error parsing regexp: invalid or unsupported Perl syntax: (?!
로그인 후 복사

이 오류는 Go가 (?!.

탐색 구문 이해

정규식에서 탐색은 조건을 지정하지 않고 조건을 주장하는 메타 문자입니다. (?!로 표시되는 부정 예측은 다음 표현식이 현재 위치에서 일치하지 않아야 함을 나타냅니다.

Go Regex 해결 방법

Go는 둘러보기를 지원하지 않으므로 위의 정규 표현식을 직접 사용할 수 없습니다. 대신 여러 정규 표현식과 조건부 검사를 사용하는 해결 방법은 다음과 같습니다. 필수:

r1 := regexp.MustCompile(`^On\s(.+?)wrote:$`)
r2 := regexp.MustCompile(`^On.*On\s.+?wrote:`)
match1 := r1.MatchString(inputString)
match2 := r2.MatchString(inputString)
if match1 && !match2 {
    // The string does not contain "On ... On" but contains "On ..."
   // Handle match
}
로그인 후 복사
또는 선택적 캡처 그룹을 사용하고 성공적인 일치 후 그룹의 내용을 확인할 수 있습니다:

r := regexp.MustCompile(`^On(.*On)?\s.+?wrote:`)
match := r.FindStringSubmatch(inputString)
if match != nil {
   // Handle match
   if match[1] != "" {
      // Group 1 ends with "On"
   }
}
로그인 후 복사

추가 참고사항

    다음과 같이 정규식 패턴을 컴파일하려면 regexp.MustCompile 함수를 사용하십시오. 유효하지 않은 표현식에 대해 패닉을 일으키고 오류 처리를 단순화합니다.
  • 제공된 해결 방법은 입력 문자열이 지정된 형식을 따른다는 가정에 의존합니다. 형식이 다양하면 이에 따라 정규식을 조정하세요.

위 내용은 Go 정규 표현식에서 Lookaround를 어떻게 해결하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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