2013-09-30 4 views
0

말은, 내가 좋아하는 라인이 있습니다찾기 부분 일치

 
SOMETHING.AA.AA.DARKSIDE 

BLaH.AA.AA.Blah 

것은 내가 각 라인 $에 대한 찾으려을 전 = $ 1; $ after = $ 2; 라인 1의 예를 들어 내가 얻을 하도록 $ 중간 = "AA"의 :

$before= “SOMETHING.” 
$After = “.AA.DARKSIDE” 

그리고 또한

$before= “SOMETHING.AA” 
$After = “.DARKSIDE” 

내 코드는 다음과 같습니다

$middle = “AA”; 

foreach (@lines){ 

    $line = $_; 

    while ($line =~m/^(.+)$middle(.+)$/g){ 

     $before = $1; 
     $after = $2; 
    } 
} 

인가가 내 동안 정규식을 변경하는 간단한 방법은? PS : $middle은 변수가되므로 하드 코딩 할 수 없습니다. 도움 주셔서 감사합니다.

+0

출력 결과를 원하는대로 보여줄 수 있습니까? – philshem

+0

지금 작동하고 더 좋은 방법이 있는지 묻는 중입니까? – mavrosxristoforos

+0

'SOMETHING.AA.AA.DARKSIDE'와 같은 것을 사용할 수 있습니까? 그렇다면 3 가지 출력을 기대하십니까? – Jerry

답변

0

왜 regexes를 사용 하시겠습니까?

($before, $after) = split(/$middle\.$middle/, $line); 

그리고 $before을 사용하고 $after 한 번씩 않고 한 번 $middle와 함께 마지막에 연결된 각각 문자열의 시작.

+0

고마워 빈스, 나는 네 길대로 할거야. 한 줄의 해결책을 원했지만 (다른 게시물을 탐색하여) 실현이 불가능하다는 것을 깨달았습니다. – yurekino

+0

기꺼이 도와 드리겠습니다. 그럼 내 대답을 받아들이겠습니까? :) – Vince

+0

완료 : 고마워요! – yurekino