2013-11-27 4 views
0

여기 제가 사용하고있는 문자열입니다.이 문자열의 표시는 다른 경우에 재 배열 될 수 있습니다. 제 경우에는 첫 번째 괄호 텍스트를 가져와 나머지 텍스트를 온라인에 넣는 것에 관심이 있습니다.perl을 사용하여 문자열의 하위 부분을 가져 오는 방법은 무엇입니까?

예를 들어

,

(test network) or test(section memory) or test(section storage) 

이상적인 출력 :

test section network 
or test(section memory) or test(section storage) 

는 여기에 내가이 목표를 달성하기 위해 사용하려고 펄 코드입니다.

while(<readline>) 
    { 
     $_ =~ s/^\(test (.*)\)(.*)/test section $1\n$2/gi; 
    } 

출력이 내가 원하는 이상적인 출력과 일치하지 않습니다.

답변

1

이 시도 :

s/^\(test ([^)]*)\)\s*(.*)/test section $1\n$2/gi 
+0

감사 perreal합니다 (* 후 사용?) ungreedyness를 사용하여 다른 솔루션입니다 –

1

표현식이 너무 욕심되고, 첫 번째 비트 (. 테스트 (*)는)에, 라인에) 마지막 그래서 dosn't 일을 일치합니다.

s/^\(test (.*?)\)(.*)/test section $1\n$2/gi 

아마 중 하나를 g (전역) 수정을 필요로하지 않는 표현이 아닌 욕심합니다.

2

perreal 대답은 ​​나는 그것을 시도 줄 것, 좋은 것, 그러나 여기

s/^\(test (.*?)\)\s*(.*)/test section $1\n$2/gi 
관련 문제