'오류' 또는 '경고'가 포함된 전체 행과 일치하는 golang을 사용한 정규 표현식(대소문자 구분 안 함)

王林
풀어 주다: 2024-02-13 08:21:10
앞으로
366명이 탐색했습니다.

正则表达式与 golang 匹配包含“错误”或“警告”(不区分大小写)的完整行

PHP 편집자 Baicao는 오늘 정규식을 사용하여 golang에서 "오류" 또는 "경고"(대소문자 구분 안 함)가 포함된 전체 행을 일치시키는 방법을 소개합니다. 정규식은 문자열의 특정 패턴과 일치하는 콘텐츠를 찾는 데 도움이 되는 강력한 텍스트 패턴 일치 도구입니다. golang에서 정규식을 사용하려면 regexp 패키지를 도입하고 Compile 함수를 사용하여 정규식을 컴파일해야 합니다. 다음으로 golang에서 줄 매칭에 정규식을 사용하는 방법을 자세히 소개하겠습니다.

질문 내용

경고 또는 오류(대소문자 구분 안 함)가 포함된 로그 파일의 각 줄의 전체 줄을 사용자에게 인쇄하고 싶습니다.

어디서:

으아악

내가 원하는 것:

으아악

순수하게 시작했어요

으아악

인쇄만 됩니다(다른 실행에서는 위의 예와 정확히 일치하지 않을 수 있음)

으아악

그런 다음 더 일치하도록 변경해야 한다고 생각했습니다.

으아악

하지만 아무것도 인쇄되지 않습니다

경고 또는 오류(대소문자 구분 안 함)가 일치하는 전체 줄과 모든 줄을 얻는 방법은 무엇입니까?

ps: 이는 문자열을 포함하는 제안된 정규식 일치 행과 동일하지 않습니다. 이는 정확히 동일한 표준 엔진을 사용하지 않는 것으로 보이는 go 언어에 대한 질문이기 때문입니다.

해결 방법

질문이 속임수로 표시된 것을 고려하면 op의 의견은 다음과 같습니다.

이 질문은 중복으로 표시되어 있으며 링크된 게시물에는 OP의 질문에 대한 답변을 모으는 데 사용할 수 있는 많은 답변이 있지만 답변이 pcre와 관련된 것으로 보이므로 아직 완전하지 않습니다. re2를 사용합니다.

으아악

우선 왜 이것이 op에 아무것도 인쇄되지 않는지 이해할 수 없습니다.

그런 다음 더 일치하도록 변경해야 한다고 생각했습니다.

으아악

하지만 아무것도 인쇄되지 않습니다

왜냐하면 모든 것이 인쇄되어야 하기 때문입니다 :

으아악 으아악

(?is)... 中的 s 标志表示将换行符与点匹配 (.)^1,并且因为您的星星 (*)은 greedy^2입니다. "오류" 또는 "경고"가 발견되면 전체 문자열의 모든 항목과 일치합니다.

실제 해결책은 "n"을 점과 일치시키지 않는 것입니다. s 플래그를 제거하면 원하는 결과를 얻을 수 있습니다.

으아악 으아악

이제 우리는 all겹치지 않는 일치만 찾는 형식을 사용하기 때문에 "n"개의 인스턴스(유효한 행)를 일치시킵니다.

"all"이 있는 경우 루틴은 전체 표현식에서 연속적이고 겹치지 않는 일치 항목을 일치시킵니다. ^3

완전하고 명확한 선을 얻습니다.

이 정규식을 약간 더 엄격하게 만들 수 있습니다.

으아악

(?:...)비캡처 그룹 ^1입니다. 왜냐하면 각 일치 항목의 "오류" 또는 "경고"에 대한 개별 인스턴스에 신경 쓰지 않는 것 같기 때문입니다.

또한 일치를 시도하기 전에 줄별로 나누면 더 많은 제어/정밀도가 제공되고 정규 표현식을 매우 쉽게 추론할 수 있다는 점을 보여주고 싶습니다.

으아악 으아악

세 가지 예는 모두 이 놀이터에 있습니다.

위 내용은 '오류' 또는 '경고'가 포함된 전체 행과 일치하는 golang을 사용한 정규 표현식(대소문자 구분 안 함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!