2012-05-21 4 views
0

누구든지 다음에 대한 정규식을 찾을 수 있도록 도와주십시오. 나는 "Processed"다음의 숫자와 일치 시키려고 노력하고 있지만 이전 줄에 "Backed"라는 문자열이있는 경우에만 해당됩니다.Regex 문자열이 다른 문자열 뒤에 오는 경우 찾기

"(? < = 처리됨) (. *?) (? = 바이트)"을 사용하여 번호를 얻었으나 preg-match-all을 사용하고 백업 된 숫자 만 일치시키고 싶습니다.

Backed up 77914 files in 16615 directories. 
Processed 19,500,663,915 bytes in 10 minutes and 27 seconds. 
Throughput rate: 1780 MB/min* 

Contents verified. 
Processed 13,694,118,197 bytes in 1 minute and 41 seconds. 
Throughput rate: 7758 MB/min* 
+0

Regex는 라인 단위로 작동하기 때문에 이전 라인에 _Backed_가 있는지 알아 보려면 두 개의 정규 표현식이 필요하고 _Processed_ (이전에 통과 한 경우) 뒤에 숫자를 얻으려면 다른 하나가 필요합니다 – Attila

답변

0

이 내가 요구 사항에 따라 얻을 수있는 가장 가까운 :

(?<=Backed)[^\n]+[\n\r]+.*Processed\s(?<num>(\d+\,*)+)\sbytes 

결과 그룹에없는 검증 번호 .... 여기

는 예를 들어 문자열입니다

것은 나는 다음과 같은 입력으로 테스트 한 :

16,615 디렉토리에 77,914 파일을 백업. 10 분 27 초 만에 19,500,663,915 바이트를 처리했습니다. 처리 속도 : 1780MB/min

내용이 확인되었습니다. 1 분 41 초 동안 13,694,118,197 바이트를 처리했습니다. 처리량 비율 : 7758MB/분

최대 77914 개의 파일이 16615 개의 디렉토리에 있습니다. 10 분 27 초 만에 19,500,663,915 바이트를 처리했습니다. 처리 속도 : 1780MB/min

내용이 확인되었습니다. 1 분 41 초 동안 13,694,118,197 바이트를 처리했습니다. 처리량 속도 : 7,758메가바이트/분

이 .. 그리고 그것이 13694118197

+0

네, 저를 위해 일하고 있습니다. 그러면 제가 필요한 데이터를 얻을 수 있습니다. 동일한 시나리오에 대한 정규 표현식을 보여 주실 수있는 변경 사항이 있습니까?하지만 "Backup of"및 "Processed"라는 단어는 아래에 나와있는 줄 수와 일치해야합니다. 예를 들어. ** ** "Search Service 응용 프로그램 \ 인덱스 파일 2 (SHAREPOINT2 \ 264e318d-a7ab-4e68-858f-2b35786beba5)의 백업" 백업 미디어 # 2613의 백업 세트 # 263 백업 세트 설명 : "SQL 데이터베이스 전체 " 백업 방법 : 전체 - 전체 데이터베이스 백업 ** 3 초 동안 413360 ** 바이트 처리. – jimhendo

+0

Errm 죄송합니다. 전에이 사이트를 사용한 적이 없습니다 ... 내 검색 문자열에서 "백업"이라는 새 줄을 말할 때마다 처리 된 줄이 새 줄에 있습니다. – jimhendo

0

의 첫 번째 항목과 일치하는 입력에게 주어진 이것은

(?<=.*Backed.*)[\d,]+(?= bytes) 

을 시도해

Backed up 77914 files in 16615 directories. Processed 19,500,663,915 bytes in 10 minutes and 27 seconds. Throughput rate: 1780 MB/min 
Contents verified. Processed 13,694,118,197 bytes in 1 minute and 41 seconds. Throughput rate: 7758 MB/min 
Backed up 77914 files in 16615 directories. Processed 19,500,663,915 bytes in 10 minutes and 27 seconds. Throughput rate: 1780 MB/min 
Contents verified. Processed 13,694,118,197 bytes in 1 minute and 41 seconds. Throughput rate: 7758 MB/min 

그것을 일치 할 것입니다

19,500,663,915 
19,500,663,915 

PCRE 라이브러리가 lookbehind 내에서 무한 반복을 지원하지 않을 수 있습니다. 우리가 대안을 찾을 수있는 경우라면

+0

나는 그가 'Backed'를 포함하고 있다면 13,694,118,197과 일치하길 원한다고 생각한다 –

+0

미안하지만, PHP preg_match를 사용하여 메신저를 언급해야하고, 버클 Awnser를 사용하면 경고 메시지가 표시된다. 경고 : preg_match() : 컴파일 실패 : lookbehind 어설 션이 수정되지 않았다. 오프셋 14에서의 길이 – jimhendo

관련 문제