문자열 일치 후 단어를 가져 오는 정규식
다음은 내용입니다.
Subject:
Security ID: S-1-5-21-3368353891-1012177287-890106238-22451
Account Name: ChamaraKer
Account Domain: JIC
Logon ID: 0x1fffb
Object:
Object Server: Security
Object Type: File
Object Name: D:\ApacheTomcat\apache-tomcat-6.0.36\logs\localhost.2013-07-01.log
Handle ID: 0x11dc
Object Name:
그 줄에 있는 단어 뒤에 나오는 단어 를 캡처해야합니다 . 어느입니다 D:\ApacheTomcat\apache-tomcat-6.0.36\logs\localhost.2013-07-01.log
. 누군가 나를 도울 수 있기를 바랍니다.
^.*\bObject Name\b.*$
일치-개체 이름
다음이 효과가있을 것입니다.
[\n\r].*Object Name:\s*([^\n\r]*)
원하는 경기는 캡처 그룹 1에 있습니다.
[\n\r][ \t]*Object Name:[ \t]*([^\n\r]*)
유사하지만 "blah Object Name : blah"와 같은 것을 허용하지 않으며 "Object Name :"뒤에 실제 내용이없는 경우 다음 행을 캡처하지 않도록하십시오.
하지만 매치 결과는 매치 그룹이 아니어야합니다 ...
당신이하려는 일에 대해 이것은 작동합니다. \K
경기의 시작 지점을 재설정합니다.
\bObject Name:\s+\K\S+
Security ID
성냥 을 얻기 위해 똑같이 할 수 있습니다 .
\bSecurity ID:\s+\K\S+
거의 완료되었습니다. 다음 정규식 사용 (여러 줄 옵션 사용)
\bObject Name:\s+(.*)$
완전한 경기는
Object Name: D:\ApacheTomcat\apache-tomcat-6.0.36\logs\localhost.2013-07-01.log
캡처 된 그룹 1에는
D:\ApacheTomcat\apache-tomcat-6.0.36\logs\localhost.2013-07-01.log
파일 경로를 직접 캡처하려면
(?m)(?<=\bObject Name:).*$
사용하는 언어에 따라이 문제가 해결 될 수 있습니다.
(?<=Object Name:).*
긍정적 인 룩 비하인드 주장입니다. 더 많은 정보는 여기 에서 찾을 수 있습니다 .
그래도 자바 스크립트에서는 작동하지 않습니다. 귀하의 의견에서 나는 당신이 logstash에 그것을 사용하고 있다고 읽었습니다. logstash에 대해 GROK 구문 분석을 사용하는 경우 작동합니다. 여기에서 자신을 확인할 수 있습니다.
https://grokdebug.herokuapp.com/
필요한 것을 얻을 수있는 빠른 펄 스크립트가 있습니다. 약간의 공백이 필요합니다.
#!/bin/perl
$sample = <<END;
Subject:
Security ID: S-1-5-21-3368353891-1012177287-890106238-22451
Account Name: ChamaraKer
Account Domain: JIC
Logon ID: 0x1fffb
Object:
Object Server: Security
Object Type: File
Object Name: D:\\ApacheTomcat\\apache-tomcat-6.0.36\\logs\\localhost.2013- 07-01.log
Handle ID: 0x11dc
END
my @sample_lines = split /\n/, $sample;
my $path;
foreach my $line (@sample_lines) {
($path) = $line =~ m/Object Name:([^s]+)/g;
if($path) {
print $path . "\n";
}
}
이것은 파이썬 솔루션입니다.
import re
line ="""Subject:
Security ID: S-1-5-21-3368353891-1012177287-890106238-22451
Account Name: ChamaraKer
Account Domain: JIC
Logon ID: 0x1fffb
Object:
Object Server: Security
Object Type: File
Object Name: D:\ApacheTomcat\apache-tomcat-6.0.36\logs\localhost.2013-07-01.log
Handle ID: 0x11dc"""
regex = (r'Object Name:\s+(.*)')
match1= re.findall(regex,line)
print (match1)
*** Remote Interpreter Reinitialized ***
>>>
['D:\\ApacheTomcat\x07pache-tomcat-6.0.36\\logs\\localhost.2013-07-01.log']
>>>
참고 URL : https://stackoverflow.com/questions/19193251/regex-to-get-the-words-after-matching-string
'development' 카테고리의 다른 글
셀레늄이 아약스 응답을 기다리도록하는 방법? (0) | 2020.12.12 |
---|---|
MySQL의 대소 문자 구분 데이터 정렬 (0) | 2020.12.12 |
파일 또는 폴더를 놓기 전에 끌고 있는지 구별하는 방법은 무엇입니까? (0) | 2020.12.12 |
urllib2.Request / urlopen으로 처리해야하는 오류 / 예외는 무엇입니까? (0) | 2020.12.12 |
여러 서버의 단일 SSL 인증서 (0) | 2020.12.12 |