두 구분 기호 사이에서 문자열을 찾을 수있는 정규 표현식을 만들려고합니다. 데이터가 ^||^
로 구분하고 선이 ^|x|x|^
종료하고 있지만, 그것은 CSV처럼정규식은 특정 구분 기호 앞에 모든 것을 검색합니다.
1234 ^||^ 5678 ^||^ 127.0.0.1 ^|x|x|^
: I는 다음과 같다 로그 데이터를 가지고있다. 나는 이것에 대해 아무런 통제력이 없다. 이것은 데이터가 제 3 자에 의해 우리에게 보내지는 방식이다.
저는 분리 기호 사이의 모든 데이터를 캡처하려고합니다. 나는 분리 또는 라인 끝 중 하나에 대한 긍정적 예측을 사용하여이 정규식 함께했다 :이 가까이 온다, 그러나 문제는 즉시 ^
텍스트에 나타나는, 일치 없다는 것입니다
[^\^]+(?=(\s\^\|\|\^\s|\s\^\|x\|x\|\^))
. [^\^]+
을 .+
으로 바꾼다면 정규식은 너무 욕심이 생겨 구분 기호 자체를 포함하여 마지막 필드까지 모든 것을 일치시킵니다.
^
을 포함하여 ^||^
구분 기호 사이의 모든 항목을 변경하려면 무엇을 변경해야합니까? 언어는 정규식 긍정적 인 lookbehind 지원하는 경우
먼저'^ | x | x | ^'을 (를) 제거하고'^ || ^'로 분리하지 않으시겠습니까? 적어도 당신이 사용하는 정규 표현식 라이브러리 (언어 또는 도구)를 알리십시오. –
사용중인 도구/언어를 알려주십시오. 대부분의 언어에는 문제를 쉽게 해결할 수있는 문자열 분할 기능이 있습니다. –
@TimBiegeleisen 저는 이것을 [grok 패턴] (https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html)의 일부로 캡처하려고합니다. Logstash로 데이터를 저장하십시오. – Oldskool