2013-05-21 2 views
0

줄마다 파일을 읽고 패턴이 일치하면 데이터를 가져 오는 프로그램이 있습니다.
현재는
function abc (int a, int b)
같은 패턴을 추출하지만 난 그것을 라인으로 읽어 줄 것을 파일로 인해 일치하지 않는 function xyz (int a, \n
int b)


같은 몇 가지 기능을 가지고 있습니다.perl 파일의 여러 줄 패턴 일치.

더 나은 방법으로 파일을 읽을 수 있습니까 아니면 여러 줄을 가져 오는 분명한 기술을 사용해야합니까?

답변

2

한 번에 여러 줄을 읽어야합니다. 파일이 너무 크지 않은 경우 전체 파일을 슬랏 (예 : http://www.perl.com/pub/2003/11/21/slurp.html) 한 다음 한 줄 정규식을 사용합니다 (예 : /stuff.next 줄/s 옵션 사용).

편집 여러 일치의 예 * g 옵션을 사용하면 모든 일치 항목을 얻을 수 있습니다. 하나의 샘플 사용은 while 루프에 있으며, 정규식을 평가할 때마다 다음 일치 항목을 얻습니다. 자세한 내용과 예는 Perl iterate through each match을 참조하십시오.

while($string=~/(regex)/g){ 
    DoSomething($1); 
} 

편집 고정 오류

+0

못해, 그것은 단지 첫 경기 내가 그것을 실행할 때마다 반환, 아니면 내가 뭔가를 놓친 거지 내가 전체 파일 내 정규식을 실행 그래서 만약 확인? – Venkat

+0

g 옵션을 사용하여 루프에서 정규 표현식을 사용하면 모든 일치 항목을 얻을 수 있습니다. 내 대답을 편집하여 예제를 추가하겠습니다. – Sysyphus

+0

대용량 파일 인 경우 동일한 작업을 수행하는 가장 좋은 방법은 무엇입니까? –